一. 中序遍历 (Inorder-Traversal)
思路:
首先中序遍历该节点的左子树, 然后遍历该节点,最后中序遍历该节点的右子树.
代码:
class Solution {
public:
/*
* @param root: A Tree
* @return: Inorder in ArrayList which contains node values.
*/
vector<int> vec;
vector<int> inorderTraversal(TreeNode * root) {
if (root != NULL)
{
inorderTraversal(root->left);
vec.push_back(root->val);
inorderTraversal(root->right);
}
return vec;
}
};
二.前序遍历 (Preorder-Traversal)
思路:
首先遍历该节点,再前序遍历该节点的左子树,最后前序遍历该节点的右子树.
代码:
class Solution {
public:
/*
* @param root: A Tree
* @return: Preorder in ArrayList which contains node values.
*/
vector<int> vec;
vector<int> preorderTraversal(TreeNode * root) {
if (root != NULL)
{
vec.push_back(root->val);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
return vec;
}
};
三. 后序遍历 (Postorder-Traversal)
思路:
首先后序遍历该节点的左子树, 然后后序遍历该节点的右子树, 最后遍历该节点
代码:
class Solution {
public:
/*
* @param root: A Tree
* @return: Postorder in ArrayList which contains node values.
*/
vector<int> vec;
vector<int> postorderTraversal(TreeNode * root) {
if (root != NULL)
{
postorderTraversal(root->left);
postorderTraversal(root->right);
vec.push_back(root->val);
}
return vec;
}
};