数据结构复习----先序遍历构造二叉树

leetcode1008

    public TreeNode bstFromPreorder(int[] preorder) {
        TreeNode root=new TreeNode(preorder[0]);
        construct(root,1,preorder.length-1,preorder);
        return root;
    }
    
    void construct(TreeNode root,int start,int end,int[] preorder) {
    	if(end<start)
    		return ;
    	int index1=start;
    	while(index1<=end&&preorder[index1]<root.val)
    		index1++;
    	if(index1!=start) {
    		TreeNode L=new TreeNode(preorder[start]);
    		root.left=L;
    		construct(L,start+1,index1-1,preorder);
    	}
    	if(index1!=end+1) {
    		TreeNode R=new TreeNode(preorder[index1]);
    		root.right=R;
    		construct(R,index1+1,end,preorder);
    	}
    }

2ms,runtime beats 100%,memory beats 100%

猜你喜欢

转载自blog.csdn.net/cobracanary/article/details/88944990