二叉树-中序前序构造二叉树(优化)

2020-06-25  本文已影响0人  今年花开正美

今天本来准备优化下中序前序构造二叉树的代码,结果死磕了两小时没搞定,感觉才优化一半。先上一版吧,明天接着搞。

题目介绍

题目就简单介绍下,给定两个数组,一个是中序遍历后的输出结果,一个是前序遍历的输出结果。需要根据两个数组构造二叉树。

实现思路

目前思路有点乱,明天优化完再补充吧。

实现代码

代码逻辑是对的,不过实现还需再次优化下。

public class SolutionConsturtFromPreorderAndInorder {

    private int tag;
    public TreeNode buildTree(int[] preorder, int[] inorder) {
        this.tag = 0;
        return buildTree(preorder, inorder, 0, preorder.length);
    }

    private TreeNode buildTree(int[] preorder, int[] inorder, int lo, int hi) {
        if (lo > hi) {
            return null;
        }

        TreeNode node = null;
        for (int i = lo; i <= hi; ++i) {
            if (inorder[i] == preorder[tag]) {
                node = new TreeNode(preorder[tag++]); //字数根节点
                node.left = buildTree(preorder, inorder, lo, i - 1);
                node.right = buildTree(preorder, inorder, i + 1, hi);
                break;
            }
        }
        return node;
    }
}

算法相关实现源码地址:https://github.com/xiekq/rubs-algorithms

上一篇 下一篇

猜你喜欢

热点阅读