LeetCode 145. Binary Tree Postorder Traversal

来源:互联网 发布:电脑行业数据分析报告 编辑:程序博客网 时间:2024/05/17 03:28

利用递归,对于每个节点,如果没有左右子树那么就保存数值并返回,如果只有左子树,遍历左子树后保存数值并返回,如果只有右子树,遍历右子树后保存数值并返回,如果左右子树都有则遍历左子树,遍历右子树,保存数值后返回。

应该可以更加简单 ,明天再说吧。

int  travel(vector<int>&v,TreeNode* root)
{
    if(root->left==NULL&&root->right==NULL)
    {
        v.push_back(root->val);
        return 0;
    }
    if(root->left!=NULL&&root->right==NULL)
    {
        travel(v,root->left);
        v.push_back(root->val);
        return 0;
    }
    if(root->left==NULL&&root->right!=NULL)
    {
        travel(v,root->right);
        v.push_back(root->val);
        return 0;
    }
    if(root->left!=NULL&&root->right!=NULL)
    {
        travel(v,root->left);
        travel(v,root->right);
        v.push_back(root->val);
        return 0;
    }
}
class Solution {
public:
    vector<int> postorderTraversal(TreeNode* root) {
        vector<int>v;
        travel(v,root);
        return v;
    }
};

0 0
原创粉丝点击