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

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

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

/**
 * 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> first;
    vector<int> mid;
    vector<int> last;
    vector<vector<int> > threeOrders(TreeNode* root) {
        // write code here
        firstorder(root);
        midorder(root);
        lastorder(root);
        vector<vector<int>> threeorders;
        threeorders.push_back(first);
        threeorders.push_back(mid);
        threeorders.push_back(last);
        return threeorders;
    }
    void firstorder(TreeNode *root){
        if(root!=NULL){
        first.push_back(root->val);
        if(root->left!=NULL) firstorder(root->left);
        if(root->right!=NULL) firstorder(root->right);
        }
        return;
    }
    void midorder(TreeNode *root){
        if(root!=NULL){
        if(root->left!=NULL) midorder(root->left);
        mid.push_back(root->val);
        if(root->right!=NULL) midorder(root->right);
        }
        return;
    }
    void lastorder(TreeNode *root){
        if(root!=NULL){
        if(root->left!=NULL) lastorder(root->left);
        if(root->right!=NULL) lastorder(root->right);
        last.push_back(root->val);
        }
        return;
    }
};

采用递归的方法进行,意料之外的时间最快,内存却较大,有点疑惑,观看大部分题解都是采用同样的递归方法,为何会有此不同,望解惑!
全部评论

相关推荐

02-14 12:40
门头沟学院 Java
程序员花海:1.面试要求必须Java笔试不一定 2.难度对等秋招 远超于日常实习是因为同一批次且转正很多 竞争压力大 3.第一个加点指标,上线了就把接口性能加上去 使用本地缓存这个不算亮点 只是技术选型,要把为什么采用这个和背后的思考写出来而不是单纯堆叠技术没意义 4.八股要一直看 很容易忘记 5.拼团交易这个老问题 堆积技术 另外建议你把奖项合并到教育背景 没必要拆出来放最后
我的简历长这样
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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