题解 | #实现二叉树先序,中序和后序遍历#

实现二叉树先序,中序和后序遍历

http://www.nowcoder.com/practice/a9fec6c46a684ad5a3abd4e365a9d362

```vector<int> c,p,m;
本文思路倒是不难,我在遍历时犯了一个低级错误.前序遍历,中序,后序遍历本该是全局变量的参数,我给写到函数内部变成局部变量了。
 return局部变量会导致函数完成后,所指向的内存空间也随之被释放掉,随之报错




/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */


class Solution {
public:
    /**
     * 
     * @param root TreeNode类 the root of binary tree
     * @return int整型vector<vector<>>
     */
    vector<int> c,p,m;   //return局部变量会导致函数完成后,所指向的内存空间也随之被释放掉
    //前序遍历
    vector<int> BinaryTreeP(TreeNode* root)
    {
        
        if(root==nullptr) 
        {
            return p;
        }
        
        p.push_back(root->val);
        BinaryTreeP(root->left);
        BinaryTreeP(root->right);
        return p;
    }
        //中序遍历
    vector<int> BinaryTreeC(TreeNode* root)
    {
        
        if(root==nullptr) 
        {
            return c;
        }
        BinaryTreeC(root->left);
        c.push_back(root->val);
        BinaryTreeC(root->right);
        return c;
    }
            //后序遍历
    vector<int> BinaryTreeH(TreeNode* root)
    {
        
        if(root==NULL) 
        {
            return m;
        }
        BinaryTreeH(root->left);
        BinaryTreeH(root->right);
        m.push_back(root->val);
        return m;
    }
    
    vector<vector<int> > threeOrders(TreeNode* root) {
        // write code here
        vector<vector<int> > v;
        v.push_back(BinaryTreeP(root));
        v.push_back(BinaryTreeC(root));
        v.push_back(BinaryTreeH(root));
        return v;
    }
};
全部评论

相关推荐

06-19 19:06
门头沟学院 Java
码农索隆:别去东软,真学不到东西,真事
点赞 评论 收藏
分享
05-12 11:09
已编辑
门头沟学院 后端
已注销:没必要放这么多专业技能的描述。这些应该是默认已会的,写这么多行感觉在凑内容。项目这块感觉再包装包装吧,换个名字,虽然大家的项目基本都是网上套壳的,但是你这也太明显了。放一个业务项目,再放一个技术项目。技术项目,例如中间件的一些扩展和尝试。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务