更新時間:2022-12-30 10:51:04 來源:動力節點 瀏覽1228次
二叉樹遞歸遍歷算法是什么?動力節點小編來告訴大家。由于樹遍歷規則是遞歸的,因此二叉樹的遞歸遍歷非常流行和方便。因此,根據二叉樹的子節點優先遍歷規則,遞歸遍歷順序有以下三種:
1.前序:訪問根節點,遍歷左子樹,遍歷右子樹
2.中序:遍歷左子樹,訪問根節點,遍歷右子樹
3.后序:遍歷左子樹,遍歷右子樹,訪問根節點
可以概括為一些規則。首先前序遍歷第一個根節點為根節點,后序遍歷最后一個根節點為根節點。
其次,前序遍歷的最后一個根節點是右子樹的最右子節點,中序遍歷的最后一個節點是根節點右子樹的最右節點。三、最左根節點中序遍歷第一個節點到左子樹的根,后序遍歷是將第一個節點作為左子樹的左子節點。
從以上規律,我們可以得出以下推論。整樹排序可以通過前序遍歷和后序遍歷推導出來。中序遍歷和后序遍歷可以確定一棵二叉樹。前序遍歷和后序遍歷不能單獨確定一棵二叉樹。
先來寫一棵二叉樹的前序遍歷、中序遍歷和后序遍歷
公共類 BinaryTree 實現 BinaryTTree {
公共二進制節點 根;
公共二叉樹(){this.root=null;}
Public Boolean isEmpty(){return this.root==null;}
}
public void preOrder(){ // 前序遍歷
PreOrder(root);// 調用遞歸方法進行預序遍歷
}
公共無效預購(BinaryNode p){
如果(p!=空)
{
System.out.print(p.data.toString()+” ”);//獲取根節點
preOrder(p.left);// 根據前序遍歷左子樹,然后遞歸調用
preorder(p.right);// 根據前序遍歷右子樹,然后遞歸調用
}
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()+””);
}
}
上面的算法是根據根節點p的定義來確定整個遞歸的方法,每次遞歸都會細化根節點p,然后找到子節點p,子節點優先。如果有子節點,則繼續查找,直到沒有子節點,就可以依次輸出之前查找過的節點。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習