zoukankan      html  css  js  c++  java
  • 从前序与中序遍历序列构造二叉树

    根据一棵树的前序遍历与中序遍历构造二叉树。

    注意:
    你可以假设树中没有重复的元素。

    例如,给出

    前序遍历 preorder = [3,9,20,15,7]
    中序遍历 inorder = [9,3,15,20,7]
    返回如下的二叉树:

    3
    /
    9 20
    /
    15 7

    /**
     * Definition for a binary tree node.
     * function TreeNode(val) {
     *     this.val = val;
     *     this.left = this.right = null;
     * }
     */
    /**
     * @param {number[]} preorder
     * @param {number[]} inorder
     * @return {TreeNode}
     */
    var buildTree = function(preorder, inorder) {
         if(!preorder.length&&!inorder.length)
            return null;
        let root = preorder[0];
        let index = inorder.indexOf(root);
        let inoLeft = inorder.slice(0,index); 
        let inoright = inorder.slice(index+1);
        let preLeft = preorder.slice(1,index+1);
        let preright = preorder.slice(index+1);
    
        let tree = new TreeNode(root);
        tree.left = buildTree(preLeft,inoLeft);
        tree.right = buildTree(preright,inoright);
        return tree;
    };

    实现:先获取根节点的数据,然后获取到每个前序和中序序列中的左右子树,然后根据左右子树的前序和中序递归计算出每个子树中的根节点。

    来源:https://leetcode-cn.com/u/nedi2016019/

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

  • 相关阅读:
    Python-单例模式
    Django 内置模板标签和过滤器
    Python Built-in Function 学习笔记
    Django 中间件
    Django Form
    Ajax
    Django中cookie和session
    Django中的QuerySet
    Django模型和ORM
    wordpress添加子主题
  • 原文地址:https://www.cnblogs.com/panjingshuang/p/11845530.html
Copyright © 2011-2022 走看看