已知前序遍歷序列和中序遍歷序列,求二叉樹的後序遍歷

2021-07-22 13:30:47 字數 1374 閱讀 9455

已知前序遍歷序列和中序遍歷序列,求二叉樹的後序遍歷
思路:
在前序遍歷的序列中第乙個就是樹的根結點,此時再在中序遍歷的序列裡查詢這個根結點,則中序遍歷的序列里根結點左側的就是左子樹,右側的就是右子樹,再對左右子樹進行同樣的操作,此時可以使用遞迴實現,這樣便能構造出這個二叉樹。
**

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,求二叉樹及後序遍歷...