zoukankan      html  css  js  c++  java
  • 从中序与后序遍历中构造二叉树-p106--数组,二叉树遍历

    package tree;
    
    public class p106 {
        private int index;
        public TreeNode buildTree(int[] inorder, int[] postorder) {
            TreeNode root;
            index=postorder.length-1;
            root=getNode(inorder,postorder);
            return root;
        }
    
        public TreeNode getNode(int[] inorder, int[] postorder){
            if(inorder.length<=0){
                index++;    //当输入为空时
                return null;
            }
            if(inorder.length==1)return new TreeNode(postorder[index]);       //只有一个节点直接返回
            TreeNode node=new TreeNode(postorder[index]);
            //找到inorder中index的位置
            int i,order=-1;
            for(i=0;i<inorder.length;i++){
                if(inorder[i]==postorder[index]){
                    order=i;
                    break;
                }
            }
            //获得右子树
            int rightNode[]=new int[inorder.length-1-order];
            System.arraycopy(inorder,order+1,rightNode,0,rightNode.length);
            index--;
            node.right=getNode(rightNode,postorder);
            //获得左子树
            int leftNode[]=new int[order];
            System.arraycopy(inorder,0,leftNode,0,leftNode.length);
            index--;
            node.left=getNode(leftNode,postorder);
            return  node;
        }
    
        public static void main(String argv[]){
            int []inorde={2,1};
            int []postorder={2,1};
            p106 temo=new p106();
            TreeNode root=temo.buildTree(inorde,postorder);
        }
    }
    
    
    
    class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(int x) { val = x; }
    }

    后序数组的倒序顺序是每一个子树的根节点,在中序数组找到每一个根节点,然后根据它将数组分成左右两部分就得到了左右子树,按照这个定律循环递归求根节点与其左右子树

  • 相关阅读:
    js 产生随机数
    基于bootstrap的multiple-select下拉控件使用
    jqgrid 单列排序和组合排序
    jqgrid 配置行号及行号的宽度
    jqgrid 配置分页大小及下拉项
    jqgrid 滚动分页
    jqgrid 宽度自适应
    jqgrid 行选中multiboxonly属性说明
    jqgrid 谈谈给表格设置列头事件、行事件、内容事件
    jqgrid 加入右键菜单按钮管理
  • 原文地址:https://www.cnblogs.com/ming-szu/p/8989571.html
Copyright © 2011-2022 走看看