更新時間:2022-12-30 10:51:04 來源:動力節(jié)點 瀏覽1338次
二叉樹遞歸遍歷算法是什么?動力節(jié)點小編來告訴大家。由于樹遍歷規(guī)則是遞歸的,因此二叉樹的遞歸遍歷非常流行和方便。因此,根據(jù)二叉樹的子節(jié)點優(yōu)先遍歷規(guī)則,遞歸遍歷順序有以下三種:
1.前序:訪問根節(jié)點,遍歷左子樹,遍歷右子樹
2.中序:遍歷左子樹,訪問根節(jié)點,遍歷右子樹
3.后序:遍歷左子樹,遍歷右子樹,訪問根節(jié)點
可以概括為一些規(guī)則。首先前序遍歷第一個根節(jié)點為根節(jié)點,后序遍歷最后一個根節(jié)點為根節(jié)點。
其次,前序遍歷的最后一個根節(jié)點是右子樹的最右子節(jié)點,中序遍歷的最后一個節(jié)點是根節(jié)點右子樹的最右節(jié)點。三、最左根節(jié)點中序遍歷第一個節(jié)點到左子樹的根,后序遍歷是將第一個節(jié)點作為左子樹的左子節(jié)點。
從以上規(guī)律,我們可以得出以下推論。整樹排序可以通過前序遍歷和后序遍歷推導(dǎo)出來。中序遍歷和后序遍歷可以確定一棵二叉樹。前序遍歷和后序遍歷不能單獨確定一棵二叉樹。
先來寫一棵二叉樹的前序遍歷、中序遍歷和后序遍歷
公共類 BinaryTree 實現(xiàn) BinaryTTree {
公共二進制節(jié)點 根;
公共二叉樹(){this.root=null;}
Public Boolean isEmpty(){return this.root==null;}
}
public void preOrder(){ // 前序遍歷
PreOrder(root);// 調(diào)用遞歸方法進行預(yù)序遍歷
}
公共無效預(yù)購(BinaryNode p){
如果(p!=空)
{
System.out.print(p.data.toString()+” ”);//獲取根節(jié)點
preOrder(p.left);// 根據(jù)前序遍歷左子樹,然后遞歸調(diào)用
preorder(p.right);// 根據(jù)前序遍歷右子樹,然后遞歸調(diào)用
}
public void inOrder(){//中序遍歷
按順序(根);
}
公共 void inOrder(BinaryNode p)
{
如果(p!=空)
{
按順序(p.left);
System.out.print(p.data.toString()+””);
按順序(p.right);
}
}
public void postOrder(){//后序遍歷
后訂單(根);
}
public void postOrder(BinaryNode p)
{
如果(p!=空)
{
postOrder(p.left);
postOrder(p.right);
System.out.print(p.data.toString()+””);
}
}
上面的算法是根據(jù)根節(jié)點p的定義來確定整個遞歸的方法,每次遞歸都會細化根節(jié)點p,然后找到子節(jié)點p,子節(jié)點優(yōu)先。如果有子節(jié)點,則繼續(xù)查找,直到?jīng)]有子節(jié)點,就可以依次輸出之前查找過的節(jié)點。
初級 202925
初級 203221
初級 202629
初級 203743