樹節點的遍歷,查詢,刪除(前序,中序,後序)

2021-10-23 03:16:33 字數 2404 閱讀 1595

二叉樹模板類:

class

binarytree

//刪除結點

public

void

delnode

(int no)

//前序遍歷

public

void

preorder()

//中序遍歷

public

void

infixorder()

//後序遍歷

public

void

postorder()

//前序遍歷

public heronode preordersearch

(int no)

//中序遍歷

public heronode infixordersearch

(int no)

//後序遍歷

public heronode postordersearch

(int no)

}

樹節點模板類:

//1.則判斷當前結點的左子節點是否為空,如果不為空,則遞迴前序查詢

//2.如果左遞迴前序查詢,找到結點,則返回

node resnode = null;if(

this

.left != null)

if(resnode != null)

//1.左遞迴前序查詢,找到結點,則返回,否繼續判斷,

//2.當前的結點的右子節點是否為空,如果不空,則繼續向右遞迴前序查詢if(

this

.right != null)

return resnode;

}

public node infixordersearch

(int no)

if(resnode != null)

system.out.

println

("進入中序查詢");

//如果找到,則返回,如果沒有找到,就和當前結點比較,如果是則返回當前結點if(

this

.no == no)

//否則繼續進行右遞迴的中序查詢if(

this

.right != null)

return resnode;

}

public node postordersearch

(int no)

if(resnode != null)

//如果左子樹沒有找到,則向右子樹遞迴進行後序遍歷查詢if(

this

.right != null)

if(resnode != null)

system.out.

println

("進入後序查詢");

//如果左右子樹都沒有找到,就比較當前結點是不是if(

//遞迴刪除結點

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

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

public

void

delnode

(int no)

//3.如果當前結點的右子結點不為空,並且右子結點 就是要刪除結點,就將this.right= null ;並且就返回(結束遞迴刪除)if(

this

.right != null &&

this

.right.no == no)

//4.我們就需要向左子樹進行遞迴刪除if(

this

.left != null)

//5.則應當向右子樹進行遞迴刪除if(

this

.right != null)

}

二叉樹前序中序後序遍歷及節點的查詢

package demo5 public class binarytree 獲取根節點 public treenode getroot public void frontshow public void midshow public void aftershow public treenode pr...

前序 中序 後序 遍歷的求解

例如 在一棵二叉樹總,前序遍歷結果為 abdgcefh,中序遍歷結果為 dgbaechf,求後序遍歷結果。我們知道 前序遍歷方式為 根節點 左子樹 右子樹 中序遍歷方式為 左子樹 根節點 右子樹 後序遍歷方式為 左子樹 右子樹 根節點 從這裡可以看出,前序遍歷的第乙個值就是根節點,然後再中序遍歷中找...

樹的前序 中序 後序遍歷

樹的前序 中序 後序遍歷 遞迴方法 ab c 樹的結構定義 struct treenode typedef treenode node typedef int eletype struct treenode 1 前序遍歷 先序遍歷,就是從上到下,從左到右,遇到乙個就遍歷,上面這個例子遍歷的序列就是 ...