已知前序遍歷序列和中序遍歷序列,求二叉樹的後序遍歷
思路:在前序遍歷的序列中第乙個就是樹的根結點,此時再在中序遍歷的序列裡查詢這個根結點,則中序遍歷的序列里根結點左側的就是左子樹,右側的就是右子樹,再對左右子樹進行同樣的操作,此時可以使用遞迴實現,這樣便能構造出這個二叉樹。
**
class treenode
public
treenode(int
value, treenode left, treenode right)
public
intgetvalue()
public
void
setvalue(int
value)
public treenode1 getleft()
public
void
setleft(treenode left)
public treenode1 getright()
public
void
setright(treenode right)
}public
class item ;
// 二叉樹的中序遍歷
int inorder = ;
treenode root = constructtree(preorder, inorder);
printpostorder(root);
}//重建二叉樹
private
static treenode1 constructtree(int preorder, int inorder)
leftnum++;
}//右子樹的個數
int rightnum = inorder.length - leftnum - 1;
if (leftnum > 0)
//遞迴構建左子樹
treenode leftroot = constructtree(leftpreorder, leftinorder);
root.setleft(leftroot);
}if (rightnum > 0)
//遞迴構建右子樹
treenode rightroot = constructtree(rightpreorder, rightinorder);
root.setright(rightroot);
}return root;
}//二叉樹的後序遍歷
public
static
void
printpostorder(treenode root)
}}
感謝 已知中序遍歷和後序遍歷,求前序遍歷
已知中序遍歷和後序遍歷,求前序遍歷 演算法的主要部分是將中序遍歷分成左中右三部分 將後序遍歷分成左右中三部分 最後後序建樹的時候節點就等於中間的部分 左子樹由中序遍歷的左部分和後序遍歷的左部分構建 右子樹由中序遍歷的右部分和後序遍歷的右部分構建 include include include inc...
已知後序遍歷和中序遍歷求前序遍歷
而已知後序遍歷和中序遍歷求前序遍歷的過程差不多,但由於後序遍歷是最後才訪問根節點的 所以要從後開始搜尋,例如上面的例子,後序遍歷為 gbdehfca,中序遍歷為 dgbaechf 後序遍歷中的最後乙個元素是根節點,a,然後查詢中序中a的位置 把中序遍歷分成 dgb a echf,而因為節點個數要對應...
如何根據前序遍歷序列和中序遍歷序列確定二叉樹
分段,每一段找根節點,就好,找root,有點遞迴的思路。例如 假設某二叉樹的先序遍歷序列是abdgcefh,中序遍歷序列是dgbaechf,畫出二叉樹,並給出其後序遍歷序列.以下面的例題為例進行講 已知一棵二叉樹的先序遍歷序列和中序遍歷序列分別是abdgcefh dgbaechf,求二叉樹及後序遍歷...