給出一棵二叉樹,返回其節點值的后序遍歷。
樣例
給出一棵二叉樹 {1,#,2,3}
,
1
\
2
/
3
返回 [3,2,1]
思路:二叉樹的后序遍歷,簡單題目,遞歸方法,要很快擼出來,非遞歸方法也要熟悉;
后序遍歷:左->右->根
注意,注意,注意! 遞歸的時候一定要注意定義的變量是否會在每次遞歸時重新定義;
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } */ class Solution { /** * @param root: The root of binary tree. * @return: Postorder in vector which contains node values. */ /* 二叉樹的后序遍歷,簡單題目,遞歸方法,要很快擼出來,非遞歸方法也要熟悉; 后序遍歷:左->右->根 注意,注意,注意! 遞歸的時候一定要注意定義的變量是否會在每次遞歸時重新定義; */ public: vector<int> vec; vector<int> postorderTraversal(TreeNode *root) { // write your code here if(root==NULL){ return vec; } if(root->left!=NULL){ postorderTraversal(root->left); } if(root->right!=NULL){ postorderTraversal(root->right); } vec.push_back(root->val); return vec; } };
給出一棵二叉樹,返回其中序遍歷
樣例
給出二叉樹 {1,#,2,3}
,
1 \ 2 / 3
返回 [1,3,2]
.
思路: 中序遍歷:左->根->右
非遞歸方法,也要熟悉;
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } */ class Solution { /** * @param root: The root of binary tree. * @return: Inorder in vector which contains node values. */ /* 用遞歸的方法,二叉樹中序遍歷,簡單題目; 中序遍歷:左->根->右 非遞歸方法,也要熟悉; */ public: vector<int> vec; vector<int> inorderTraversal(TreeNode *root) { // write your code here if(root==NULL){ return vec; } if(root->left!=NULL){ inorderTraversal(root->left); } vec.push_back(root->val); if(root->right!=NULL){ inorderTraversal(root->right); } return vec; } };
給出一棵二叉樹,返回其節點值的前序遍歷。
樣例
給出一棵二叉樹 {1,#,2,3}
,
1
\
2
/
3
返回 [1,2,3]
.
思路:簡單題,遞歸方法要在五分鍾內快速正確的擼出來;
先序遍歷:根->左->右
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } */ class Solution { public: /** * @param root: The root of binary tree. * @return: Preorder in vector which contains node values. */ /* 簡單題,遞歸方法要在五分鍾內快速正確的擼出來; 先序遍歷:根->左->右 */ vector<int> vec; vector<int> preorderTraversal(TreeNode *root) { // write your code here if(root==NULL){ return vec; } vec.push_back(root->val); if(root->left!=NULL){ preorderTraversal(root->left); } if(root->right!=NULL){ preorderTraversal(root->right); } return vec; } };