105. 从前序与中序遍历序列构造二叉树 --力扣 --JAVA

简介: 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。

 题目

给定两个整数数组 preorderinorder ,其中 preorder 是二叉树的先序遍历inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。

解题思路

    1. 先序遍历:根左右;
    2. 中序遍历:左根右;
    3. 从先序遍历中确定根节点,再从中序遍历中判断左右子树的长度范围,从而确定左右子树的根节点。

    代码展示

    class Solution {
        public TreeNode buildTree(int[] preorder, int[] inorder) {
            int size = preorder.length;
            Map<Integer,Integer> store = new HashMap<>();
            for (int i = 0; i < inorder.length; i++){
                store.put(inorder[i],i);
            }
            return build(preorder, store,0,0,size - 1);
        }
        private TreeNode build(int[] preorder, Map<Integer,Integer> store, int root,int left,int right){
            if(left > right){
                return null;
            }
            TreeNode node = new TreeNode(preorder[root]);
            int middle = store.get(preorder[root]);
            node.left = build(preorder, store,root + 1, left, middle - 1);
            //middle - left是左子树的长度 1表示下一个节点
            node.right = build(preorder, store,root + middle - left + 1, middle + 1, right);
            return node;
        }
    }

    image.gif


    目录
    相关文章
    |
    Java
    java实现遍历树形菜单方法——OpenSessionView实现
    java实现遍历树形菜单方法——OpenSessionView实现
    12 0
    |
    1月前
    |
    Java
    java实现遍历树形菜单方法——TreeAction实现
    java实现遍历树形菜单方法——TreeAction实现
    9 0
    |
    1月前
    |
    Java
    java实现遍历树形菜单方法——HibernateUtil实现
    java实现遍历树形菜单方法——HibernateUtil实现
    10 0
    |
    1月前
    |
    Java
    java实现遍历树形菜单方法——service层
    java实现遍历树形菜单方法——service层
    11 0
    |
    1月前
    |
    Java
    java实现遍历树形菜单方法——映射文件VoteTree.hbm.xml
    java实现遍历树形菜单方法——映射文件VoteTree.hbm.xml
    10 0
    |
    1月前
    |
    Java
    java实现遍历树形菜单方法——实体类VoteTree
    java实现遍历树形菜单方法——实体类VoteTree
    12 0
    |
    16天前
    |
    算法 Java C语言
    C++和Java中的随机函数你玩明白了吗?内附LeetCode470.rand7()爆改rand10()巨详细题解,带你打败LeetCode%99选手
    C++和Java中的随机函数你玩明白了吗?内附LeetCode470.rand7()爆改rand10()巨详细题解,带你打败LeetCode%99选手
    |
    Java
    java实现遍历树形菜单方法——index.jsp实现
    java实现遍历树形菜单方法——index.jsp实现
    6 0
    |
    3天前
    [leetcode~dfs]1261. 在受污染的二叉树中查找元素
    [leetcode~dfs]1261. 在受污染的二叉树中查找元素
    [leetcode~dfs]1261. 在受污染的二叉树中查找元素
    |
    10天前
    |
    算法 DataX
    二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
    二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”

    热门文章

    最新文章