二叉树的遍历

 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 }

 

posted @ 2016-09-20 21:32  Ricardo  阅读(114)  评论(0编辑  收藏  举报