二叉樹學習(三) 二叉樹遍歷

2021-07-27 21:11:34 字數 2509 閱讀 1646

二叉樹的遍歷是指從根結點出發,按照某種次序依次訪問樹中所有結點,使得每個結點被訪問依次且僅被訪問一次。

其中訪問代表對該結點的資料的操作,這裡我們可以認為就是直接列印該結點的資料。

二叉樹遍歷演算法的基礎是遞迴

若二叉樹為空,則空操作返回。否則先訪問根結點,然後前序遍歷左子樹,再前序遍歷右子樹。

先訪問,再左子樹,再右子樹。

前序遍歷演算法

public

void

preorder(nodenode) else

}

遍歷結果是:a b d g h c e i f

演算法解析:

1、首先判斷是否為空樹,不為空(根節點不為空),則執行system.out.println(node.data);列印出a。

2、接下來在a結點上遞迴呼叫執行preorder(node.lchild);訪問根節點a的左孩子b,不為null,則system.out.println(node.data)列印顯示字母b

3、在b結點上遞迴呼叫preorder(node.lchild);訪問結點d,d結點不為空,列印顯示d

4、在d結點上遞迴呼叫preorder(node.lchild);訪問結點h,h不為空,輸出列印h

4、在h結點上遞迴呼叫preorder(node.lchild);h左子樹為空,h結點上的preorder(node.lchild);這行**返回

5、執行h結點上的preorder(node.rchild);,訪問h結點的右結點k,k不為空,輸出列印k

6、在k上遞迴呼叫preorder(node.lchild);為空返歸,

7、在k上遞迴呼叫preorder(node.rchild);為空返回到h結點,

8、h結點的preorder(node.rchild);這行**返回了,則h結點的**執行完畢,返回到d結點

9、d結點的preorder(node.lchild);**返回了,呼叫preorder(node.rchild)遍歷d結點的右子樹,右子樹為空,返回;

10、返回到b結點,b結點呼叫preorder(node.rchild);訪問b結點的右子樹e,e不為空,輸出列印e

11、在e結點上遞迴呼叫preorder(node.lchild);preorder(node.rchild);均為空,返回到b,

12、b結點**執行完畢,返回到a結點,

13、a結點執行preorder(node.rchild);訪問a結點的右子樹c,c不為空,輸出列印c

14、在c結點遞迴呼叫preorder(node.lchild);訪問c的左子樹f,f不為空輸出列印f

15、在f上遞迴呼叫preorder(node.lchild);訪問f的左子樹i,i不為空,輸出列印i

16、在i結點上呼叫preorder(node.lchild);preorder(node.rchild);均為空,返回到結點f

17、結點f呼叫preorder(node.rchild);訪問f結點右子樹,右子樹為空,返回

18、f結點**執行完畢,返回到c結點,c結點呼叫preorder(node.rchild);訪問c結點的右子樹g,g不為空,輸出列印g

19、在g結點上遞迴呼叫preorder(node.lchild);訪問g的左子樹,左子樹為空,返回

20、g結點呼叫preorder(node.rchild);訪問g結點的右子樹j,j不為空,輸出列印j

21、在j上呼叫preorder(node.lchild);preorder(node.rchild);均為空,返回

22、g**執行完畢返回到c,

23、c**執行完畢返回到a,

24、a**執行完畢,整個遍歷結束。

最終輸出結果:

a b d g h c e i f

先左子樹,再訪問,再右子樹。

}遍歷演算法跟前序遍歷相似,其關鍵就是遞迴呼叫,在哪個結點上遞迴,返回到哪個結點。

遍歷輸出結果是:g d h b a e i c f

先右子樹,再左子樹,再訪問

}遍歷演算法同前序、中序。

遍歷輸出結果是: g h d b i e f c a

構建二叉樹 遍歷二叉樹

陣列法構建二叉樹 public class main public static void main string args 用陣列的方式構建二叉樹 public static void createbintree 把linkedlist集合轉成二叉樹的形式 for int j 0 j 最後乙個父節...

二叉樹學習之旅(7) 二叉樹遍歷

用到的演算法 1.函式push back,演算法語言裡面的乙個函式名用於在vector容器後面加乙個資料,v.push back val 如 1 c 中的vector標頭檔案裡面就有這個push back函式 2 在vector類中作用為在vector尾部加入乙個資料 3 string中也有這個函式...

二叉樹遍歷(樹)

description 樹和二叉樹基本上都有先序 中序 後序 按層遍歷等遍歷順序,給定中序和其它一種遍歷的序列就可以確定一棵二叉樹的結構。假定一棵二叉樹乙個結點用乙個字元描述,現在給出中序和按層遍歷的字串,求該樹的先序遍歷字串。input 輸入檔案flist.in共兩行,每行是由字母組成的字串 一行...