二叉樹的部分操作

2021-09-17 01:14:41 字數 1572 閱讀 2116

(本人是一名大三的老油條,第一次寫部落格,想記錄一下最近的學過的東西。。。。。。。。)

1、先序遍歷(dlr)

1、 使用遞迴

核心**

system.out.println(root.value);

this.firstbianli(root.leftchild);(遞迴呼叫

this.firstbianli(root.rightchild);(遞迴呼叫

(這裡的firstbianli(node root)方法是自己定義的遍歷方法)

2、 借助棧

2、中序遍歷(ldr)

1、 使用遞迴

核心**

this,middlebianli(root.leftchild);(遞迴呼叫

system.out.println(root);

this.middlebianli(root.rightchild);(遞迴呼叫

(這裡的middlebianli(node root)方法是自己定義的遍歷方法)

2、 借助棧

(1)、 對於任意節點current,若該節點不為空,則入棧,並將左子樹置為current,重複此操作,直到current為空。

(2)、若左子樹為空,棧頂節點出棧,並將該節點的左子樹置為current。

(3)、重複1~2,直到current為空且棧為空。

3、後序遍歷(lrd)

1、使用遞迴

核心**

this.lastbianli(root.leftchild);(遞迴呼叫

this.lastbianli(root.rightchild);(遞迴呼叫

system.out.println(root);

(lastbianli(node root)方法是自己定義的遍歷方法)

2、 借助棧

4、按層次遍歷(借助佇列)

(1)、先root(為根節點)入隊

(2)、root出隊,並且的左右孩子相繼入隊。

(3)、重複1~2操作。

5、獲取二叉樹的高度

隨便畫一顆二叉樹你會發現,二叉樹的高度為左右孩子高度最大的長度加一即為二叉樹的高度。

同樣也可以使用遞迴運算來求取高度。

這裡我簡單的使用三目運算子舉乙個列子。

b>a?(b+1):(a+1) 這裡a、b分別為左右子樹的高度。

6、節點個數

sum=a+b+1(sum為二叉樹的節點個數,a、b分別為左右子樹的節點個數)

從這個表示式可以看出,符合遞迴的概念,因此,這裡也可以使用遞迴來求節點個數。

(先寫到這吧!有時間再寫吧。。。。。)

二叉樹建立及部分操作

宣告 為了封裝性,下面所有的遞迴函式都設為私有,用乙個公有方法呼叫。include include include using namespace std 定義節點 templateclass tree node templateclass tree else 前序遞迴遍歷的函式 void preo...

二叉樹 二叉樹的相關操作

遞迴實現 建立求樹高 求葉子數 求節點數 統計度為2的結點個數 後序輸出 先序輸出 中序輸出 交換左右子樹 include include include define true 1 define false 0 define ok 1 define error 0 define overflow ...

二叉樹部分筆記

二叉樹 1 性質 性質1 二叉樹第i層上的結點數目最多為 2 i 1 性質2 深度為k的二叉樹至多有2 1個結點 k 1 性質3 包含n個結點的二叉樹的高度至少為log2 n 1 性質4 在任意一棵二叉樹中,若終端結點的個數為n0,度為2的結點數為n2,則n0 n2 1。2 種類 1 滿二叉樹 第一...