#include<iostream> #include<vector> using namespace std; //same as linked list data structure struct TreeNode{ int value; TreeNode* left; TreeNode* right; TreeNode(int x):value(x),left(NULL),right(NULL){} }; void BST(TreeNode* node, TreeNode* insertnode){ // Determine if the binary tree is empty /* if(node == NULL){ node = insertnode; } */ if(node->value > insertnode->value){ // insert left if(node->left == NULL){ node->left = insertnode; }else{ BST(node->left, insertnode); } }else{ // insert right if(node->right == NULL){ node->right = insertnode; }else{ BST(node->right, insertnode); } } } //Pre-order traversal first print and node, left and right void preorder(TreeNode* node, int layer){ if(!node){ return; // void type, cannot return 0; } for(int i = 0; i <layer; i++ ){ cout<<"------"; } cout<<node->value<<endl; preorder(node->left, layer++); preorder(node->right, layer++); } void postorder(TreeNode* node, int layer){ if(!node){ return; // void type, cannot return 0; } postorder(node->left, layer++); postorder(node->right, layer++); for(int i = 0; i <layer; i++ ){ cout<<"------"; } cout<<node->value<<endl; } void inorder(TreeNode* node, int layer){ //中序 if(!node){ return; // void type, cannot return 0; } inorder(node->left, layer++); for(int i = 0; i <layer; i++ ){ cout<<"------"; } cout<<node->value<<endl; inorder(node->right, layer++); } int main(){ TreeNode node(8); std::vector<TreeNode*> node_vec; int test[] = {3, 10, 1, 6, 15}; //Assignment of dynamic array for(int i = 0; i < 5; i++){ node_vec.push_back( new TreeNode(test[i])); // } for(int i = 0; i < node_vec.size(); i++){ BST(&node,node_vec[i]); } preorder(&node, 0); postorder(&node, 0); inorder(&node, 0); return 0; }
Binary tree creation and recursive traversal
Guess you like
Origin http://10.200.1.11:23101/article/api/json?id=326640443&siteId=291194637
Recommended
Ranking