根據一棵樹的中序遍歷與後序遍歷構造二叉樹。
注意:你可以假設樹中沒有重複的元素。
例如,給出
中序遍歷 inorder = [9,3,15,20,7]
後序遍歷 postorder = [9,15,7,20,3]
返回如下的二叉樹:
3
/ \9 20
/ \
15 7
public int postindex = 0;
public treenode2 buildtreechild1(int inorder, int postorder,int inbegin,int inend)
treenode2 root = new treenode2(postorder[postindex]);
//找root在中序遍歷的下標
int rootindex = findindexofinorder1(inorder,inbegin,inend,postorder[postindex]);
postindex--;
root.right = buildtreechild1(inorder,postorder ,rootindex+1,inend);
root.left = buildtreechild1(inorder ,postorder,inbegin, rootindex-1);
return root;
}public int findindexofinorder1(int inorder,int inbegin, int inend,int val)
}return -1;
}public treenode2 buildtree(int inorder, int postorder)
if(postorder.length == 0 || inorder.length ==0)
postindex = postorder.length-1;
return buildtreechild1(inorder,postorder,0,inorder.length-1);
}
根據一棵樹的中序遍歷與後序遍歷構造二叉樹。
根據一棵樹的中序遍歷與後序遍歷構造二叉樹。注意 你可以假設樹中沒有重複的元素。例如,給出 中序遍歷 inorder 9,3,15,20,7 後序遍歷 postorder 9,15,7,20,3 返回如下的二叉樹 3 9 20 15 7private int index2 public treenod...
已知一棵樹前中序遍歷,怎麼求後序遍歷
已知一棵樹的前序遍歷是 youzanstyle 而中序遍歷是 uoznayyltse 怎麼求後序遍歷?我們可以通過前序遍歷得到根節點,通過中序遍歷得到左右子樹。樹根節點是y,左子樹是uozna,右子樹是yltse uozna根節點是o,左子樹是u,右子樹是zna zna根節點是z,沒有左子樹,右子樹...
根據先序遍歷的結果建立一棵樹 D S
根據先序遍歷的結果建立一棵樹 根據先序遍歷的結果還原一棵樹 則該樹是不確定的 例如 先序遍歷的結果abc 有兩種形式 如果要還原一棵樹,除了要知道先序遍歷的結果,還需要知道樹的位置。如果用 表示空樹,則左邊的二叉樹為 ab c 而右邊的二叉樹為 abc 已只先序遍歷的結果,在建立樹時,先建立根節點 ...