非递归中序遍历

简介: 非递归思想
class Solution {
    public int i = 0;
    public TreeNode buildTree(int[] inorder, int[] postorder) {
        i = postorder.length-1;
        if(inorder == null || postorder == null){
            return null;
        }
        return buildTreeChild(inorder,postorder,0,postorder.length-1);
    }
    public TreeNode buildTreeChild(int[] inorder,int[] postorder,
    int inbegin,int inend){
        if(inbegin > inend){
            return null;
        }
        TreeNode root = new TreeNode(postorder[i]);
        //逗号写成了点号,一定要注意细节
        int rootIndex = findIndex(inorder,inbegin,inend,postorder[i]);
        i--;
        root.right = buildTreeChild(inorder,postorder,rootIndex + 1,inend);
        root.left = buildTreeChild(inorder,postorder,inbegin,rootIndex - 1);
        return root;
    }
    public int findIndex(int[] inorder,int begin,int inend,int key){
        for(int i =begin;i<= inend;i++){
            if(inorder[i] == key){
                return i;
            }
        }
        return -1;
    }
}
相关文章
|
6月前
|
存储
LeetCode题94,44,145,二叉树的前中后序遍历,非递归
LeetCode题94,44,145,二叉树的前中后序遍历,非递归
61 0
非递归实现二叉树遍历
非递归实现二叉树遍历
52 0
非递归方式实现二叉树的前、中、后序遍历
非递归方式实现二叉树的前、中、后序遍历
【C++】非递归实现二叉树的前中后序遍历
【C++】非递归实现二叉树的前中后序遍历
【C++】非递归实现二叉树的前中后序遍历
|
算法 搜索推荐
从二叉树的前中后序遍历,我们来说递归和快速排序
从二叉树的前中后序遍历,我们来说递归和快速排序
从二叉树的前中后序遍历,我们来说递归和快速排序
|
C语言 C++
前序遍历+中序遍历重建二叉树
前序遍历+中序遍历重建二叉树
142 0
前序遍历+中序遍历重建二叉树
|
算法 前端开发 JavaScript
「LeetCode」二叉树的先中后序遍历(非递归版)⚡️
「LeetCode」二叉树的先中后序遍历(非递归版)⚡️
119 0
「LeetCode」二叉树的先中后序遍历(非递归版)⚡️
|
算法 前端开发 JavaScript
「LeetCode」二叉树的先中后序遍历(递归版)⚡️
「LeetCode」二叉树的先中后序遍历(递归版)⚡️
121 0
「LeetCode」二叉树的先中后序遍历(递归版)⚡️
LeetCode——二叉树的层序遍历(递归与非递归)
LeetCode——二叉树的层序遍历(递归与非递归)
117 0
LeetCode——二叉树的层序遍历(递归与非递归)