zoukankan      html  css  js  c++  java
  • Leetcode Construct Binary Tree from Preorder and Inorder Traversal

    Given preorder and inorder traversal of a tree, construct the binary tree.

    Note:
    You may assume that duplicates do not exist in the tree.

    此题目有两种解决思路:

    1)递归解决(比较好想)按照手动模拟的思路即可

    2)非递归解决,用stack模拟递归

    class Solution {
    public:
        TreeNode *buildTree(vector<int>& preorder, int pre_left,int pre_right,
                            vector<int>& inorder,  int in_left, int in_right){
            if(pre_left > pre_right || in_left > in_right) return NULL;
            TreeNode *root = new TreeNode(preorder[pre_left]);
            int index = in_left;
            for( ; index <= in_right; ++ index ) if(inorder[index] == preorder[pre_left])  break;
            int left_cnt = index-in_left;
            root->left = buildTree(preorder,pre_left+1,pre_left+left_cnt,inorder,in_left,index-1);
            root->right = buildTree(preorder,pre_left+left_cnt+1,pre_right, inorder, index+1,in_right);
            return root;
        }
        
        TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) {
            if(preorder.size() == 0) return NULL;
            else return buildTree(preorder,0,preorder.size()-1, inorder,0,inorder.size()-1);
        }
    };
    递归解决
  • 相关阅读:
    webpack—从零开始配置
    多媒体标签 API(video、audio)
    node 爬虫
    node 操作数据库
    es6+
    UI 组件库 引入使用的问题
    单页应用存在 的问题
    ajax 封装(集中 认证、错误、请求loading处理)
    moment.js 时间库
    文件上传大小被限制的解决方案。
  • 原文地址:https://www.cnblogs.com/xiongqiangcs/p/3821172.html
Copyright © 2011-2022 走看看