指针建树
#include <bits/stdc++.h> using namespace std; const int N = 1010; int Node_k,pre[N],in[N],post[N];//遍历用 struct Node { int value; Node *left, *right; Node(int value = 0, Node *left = nullptr, Node *right = nullptr) : value(value), left(left), right(right) {}; Node* find(const int val, Node *node) { if (node != nullptr) { if (node->value == val) return node; else { Node *res = find(val, node->left); if (res != nullptr) return res; else return find(val, node->right); } } else return nullptr; } }; Node* create_tree(int val) { if (val == 0) return nullptr; else return new Node(val); } void preorder(Node *root) { if (root != nullptr) { pre[Node_k++] = root->value; preorder(root->left); preorder(root->right); } return; } void inorder(Node *root) { if (root != nullptr) { inorder(root->left); in[Node_k++] = root->value; inorder(root->right); } return; } void postorder(Node *root) { if (root != nullptr) { postorder(root->left); postorder(root->right); pre[Node_k++] = root->value; } return; } int main(){ Node* tree = new Node; int lval=1,rval=1; tree->left=create_tree(lval); tree->right=create_tree(rval); preorder(tree); for (int i = 0; i < Node_k; i++) { cout<<pre[i]<<endl; } return 0; }
本文在博客园发布,作者:limited_Infinite,转载请注明原文链接:https://www.cnblogs.com/limitedInfinite/p/14683169.html