class Solution {
public:
vector<int> v;//中序遍历左子树 --> 显示结点数据,或其他对结点的操作 --> 中序遍历右子树。
vector<int> inorderTraversal(TreeNode* root) {
if(root == NULL) return v;
if(root->left != NULL)
{
inorderTraversal(root->left);
}
v.push_back(root->val);
if(root->right != NULL)
{
inorderTraversal(root->right);
}
return v;
}
};
class Solution {
public:
vector<int> v;
vector<int> inorderTraversal(TreeNode* root) {
if(root!=NULL){
inorderTraversal(root->left);
v.push_back(root->val);
inorderTraversal(root->right);
}
return v;
}
};
前序遍历:前序遍历可以记为根左右,若二叉树为空,则结束返回。
前序遍历的规则:
(1)访问根节点
(2)前序遍历左子树
(3)前序遍历右子树
中序遍历:中序遍历可以记为左根右,也就是说在二叉树的遍历过程中,首先要遍历二叉树的左子树,接着遍历根节点,最后遍历右子树。
同样,在二叉树为空的时候,结束返回。
中序遍历的规则:
(1)中序遍历左子树
(2)访问根节点
(3)中序遍历右子树
后序遍历:后序遍历可以记为左右根,也就是说在二叉树的遍历过程中,首先按照后序遍历的规则遍历左子树,接着按照后序遍历的规则遍历右子树,最后访问根节点。
在二叉树为空的时候,结束返回。
后序遍历二叉树的规则:
(1)后序遍历左子树
(2)后序遍历右子树
(3)访问根节点