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

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

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

这个题目比较基础,递归即可,注意插入到vector的位置,类和函数的设计也是值得注意的,做到安全和鲁棒性。

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

class Solution {
private:
    void preOrder(const TreeNode* root, vector<int>& pre)
    {
        if(root==nullptr) return;
        pre.push_back(root->val);
        preOrder(root->left, pre);
        preOrder(root->right, pre);
    }

    void midOrder(const TreeNode* root, vector<int>& mid)
    {
        if(root==nullptr) return;
        midOrder(root->left, mid);
        mid.push_back(root->val);
        midOrder(root->right, mid);
    }

    void endOrder(const TreeNode* root, vector<int>& end)
    {
        if(root==nullptr) return;
        endOrder(root->left, end);
        endOrder(root->right, end);
        end.push_back(root->val);
    }
public:
    /**
     * 
     * @param root TreeNode类 the root of binary tree
     * @return int整型vector<vector<>>
     */
    vector<vector<int> > threeOrders(TreeNode* root) {
        // write code here
        vector<int> forward, mid, back;
        vector<vector<int>> res;
        preOrder(root, forward);
        midOrder(root, mid);
        endOrder(root, back);
        res.push_back(forward);
        res.push_back(mid);
        res.push_back(back);

        return res;
    }


};
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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