二叉树的遍历
1 // 树的结点 2 struct TreeNode 3 { 4 int value; 5 TreeNode* left; 6 TreeNode* right; 7 TreeNode(int x) : value(x), left(NULL), right(NULL) {} 8 }; 9 10 // 先序遍历 11 void PreOrderTraversal(TreeNode* root, std::vector<int>& vals) 12 { 13 if(root == NULL) 14 { 15 return; 16 } 17 18 vals.push_back(root->value); 19 PreOrderTraversal(root->left, vals); 20 PreOrderTraversal(root->right, vals); 21 } 22 23 // 中序遍历 24 void InOrderTraversal(TreeNode* root, std::vector<int>& vals) 25 { 26 if(root == NULL) 27 { 28 return; 29 } 30 31 InOrderTraversal(root->left, vals); 32 vals.push_back(root->value); 33 InOrderTraversal(root->right, vals); 34 } 35 36 // 后序遍历 37 void PostOrderTraversal(TreeNode* root, std::vector<int>& vals) 38 { 39 if(root == NULL) 40 { 41 return; 42 } 43 44 PostOrderTraversal(root->left); 45 PostOrderTraversal(root->right); 46 vals.push_back(root->value); 47 }