二叉樹遍歷與查詢簡單刪除

2021-10-25 10:44:36 字數 3280 閱讀 4146

使用前序,中序和後序對下面的二叉樹進行遍歷.

前序遍歷: 先輸出父節點,再遍歷左子樹和右子樹

中序遍歷: 先遍歷左子樹,再輸出父節點,再遍歷右子樹

後序遍歷: 先遍歷左子樹,再遍歷右子樹,最後輸出父節點

小結: 看輸出父節點的順序,就確定是前序,中序還是後序

如果刪除的節點是葉子節點,則刪除該節點

如果刪除的節點是非葉子節點,則刪除該子樹.

//二叉樹

class

binarytree

//前序遍歷

public

void

preorder()

else

}//中序遍歷

public

void

infixorder()

else

}//後序排序

public

void

postorder()

else

}//前序遍歷

public heronode preorder

(int no)

else

}//中序遍歷

public heronode infixorder

(int no)

else

}//後序排序

public heronode postorder

(int no)

else

}//刪除結點

public

void

delnode

(int no)

else

}else}}

//節點類

class

heronode

public

intgetno()

public

void

setno

(int no)

public string getname()

public

void

setname

(string name)

public heronode getleft()

public

void

setleft

(heronode left)

public heronode getright()

public

void

setright

(heronode right)

@override

public string tostring()

';}//前序遍歷

public

void

preorder()

//如果右結點不為空if(

this

.right!=null)

}//中序遍歷

public

void

infixorder()

//輸出當前結點

system.out.

println

(this);

//如果右節點不為空,遞迴進行中序遍歷if(

this

.right!=null)

}//後序遍歷

public

void

postorder()

//如果右節點不為空,遞迴進行後序遍歷if(

this

.right!=null)

//輸出當前結點

system.out.

println

(this);

}//前序查詢

public heronode preorder

(int no)

heronode resnode=null;

//如果左節點不為空,遞迴左查詢if(

this

.left!=null)

//說明左子樹找到

if(resnode!=null)

//如果右結點不為空if(

this

.right!=null)

return resnode;

}//中序遍歷查詢

public heronode infixordersearch

(int no)

//說明左子樹查詢到

if(resnode!=null)

system.out.

println

("進入中序遍歷");

//比較當前結點if(

this

.no==no)

//如果右結點不為空,遞迴查詢右子樹if(

this

.right!=null)

return resnode;

}//後序查詢

public heronode postordersearch

(int no)

//說明左子樹查詢到

if(resnode!=null)

//如果右結點不為空遞迴查詢右結點if(

this

.right!=null)

//說明有右子樹找到

if(resnode!=null)

system.out.

println

("進入後續查詢");

//比較放棄結點if(

this

.no==no)

return resnode;

}//刪除結點

public

void

delnode

(int no)

//如果右節點不為空和右節點為刪除的結點if(

this

.right!=null&&

this

.right.no==no)

//如果左節點不為空,遞迴刪除if(

this

.left!=null)

//如果右結點不為空,遞迴刪除if(

二叉樹遍歷與查詢簡單刪除

使用前序,中序和後序對下面的二叉樹進行遍歷.前序遍歷 先輸出父節點,再遍歷左子樹和右子樹 中序遍歷 先遍歷左子樹,再輸出父節點,再遍歷右子樹 後序遍歷 先遍歷左子樹,再遍歷右子樹,最後輸出父節點 小結 看輸出父節點的順序,就確定是前序,中序還是後序 如果刪除的節點是葉子節點,則刪除該節點 如果刪除的...

二叉樹遍歷查詢

1 前序遍歷 先輸出父節點,再遍歷左子樹和右子樹 2 中序遍歷 先遍歷左子樹,再輸出父節點,再遍歷右子樹 3 後序遍歷 先遍歷左子樹,再遍歷右子樹,最後輸出父節點 4 小結 看輸出父節點的順序,就確定是前序,中序還是後序 package com.atguigu.tree public class b...

學習筆記 二叉樹遍歷 查詢 刪除

樹結構出現的原因 二叉樹示意圖 常用用語 葉子節點 沒有子節點的節點。節點的權 節點值。路徑 從根節點找到該節點的一條路。樹的高度 也就是最大層數。二叉樹概念 每個節點最多只能有兩個子節點稱為二叉樹。二叉樹的節點分為左子節點和右子節點。前序遍歷 先輸出父節點,然後遍歷左子樹右子樹。即先輸出該節點,如...