二叉樹基礎

2021-10-23 10:18:57 字數 1887 閱讀 7978

二叉樹在我之前資料結構課程中學過,但很不系統甚至已經忘乾淨了。這次吳永輝教授暑假訓練計畫中有很多關於二叉樹的訓練,讓我重新學習二叉樹。希望通過這次學習,能對二叉樹有更深的、系統的理解。二叉樹有一般二叉樹、完全二叉樹、滿二叉樹、線索二叉樹、霍爾曼數、二叉排序樹、平衡二叉樹、紅黑樹、b樹。

二叉樹是一種樹形結構的乙個重要型別。一般樹可以轉化為二叉樹,並且二叉樹的儲存結構和演算法都較為簡單,因此二叉樹很重要。二叉樹的特點是每個節點最多只有兩棵子樹,並且有左右之分。

參考

參考參考

二叉樹是指樹中節點的度不大於2的有序樹,它是一種簡單而最重要的樹。二叉樹遞迴定義為:二叉樹是一棵空樹,或者是一棵由乙個根結點和兩棵互不相交的,分別稱為根的左子樹和右子樹組成的非空樹;左子樹和右子樹同樣是二叉樹。

空二叉樹、只有乙個根結點的二叉樹、只有左子樹、只有右子樹、滿二叉樹

度:結點擁有子樹的數目

結點關係:

(1)結點子樹的根結點為該結點的孩子結點,該結點被孩子結點稱為雙親結點

(2)同乙個雙親結點的孩子結點之間互稱兄弟結點

結點層次:從根開始定義,根為第一層,根的孩子為第二層,依次類推

樹的深度或高度:樹中結點最大層次

在第i層上最多有2 ^ (i-1)個結點 ( i >= 1 )

如果二叉樹深度為k,那麼一共最多有2 ^ k -1個結點,( k >= 1 )

n0=n2+1,n0表示度數為0的結點數,n2表示 度數為2的結點數

按一定的規則和順序走遍二叉樹的所有結點,使每個結點都被訪問,且僅訪問一次。實質是將二叉樹的各個結點轉化成乙個線性序列來表示。

分為:前序遍歷、中序遍歷、後序遍歷、層序遍歷。

#include

#include

using

namespace std;

typedef

struct node node;

void

preorder

(node* node)

return;}

void

inorder

(node* node)

}void

postorder

(node*node)

}int

main()

根結點——>左子樹——>右子樹

#include

#include

using

namespace std;

typedef

struct node node;

void

preorder

(node* node)

return;}

intmain()

左子樹——>根結點——>右子樹

void

inorder

(node* node)

}

左子樹——>右子樹——>根結點

void

postorder

(node*node)

}

二叉樹基礎

二叉樹 二叉樹是一棵特殊的樹,二叉樹每個節點最多有兩個孩子結點,分別稱為左孩子和右孩子。二叉樹節點結構 二叉樹的建立 node createtree const t a,size t size,size t index,const t invilid return root 返回根節點 前序遍歷 前...

二叉樹基礎

最近學習的一些筆記,記錄一下 樹是一種非線性結構,樹 這種資料結構真的很像我們現實生活中的 樹 這裡面每個元素我們叫 節點 例如下面這幅圖,a 節點就是 b 節點的父節點,b 節點是 a 節點的子節點。b c d 這三個節點的父節點是同乙個節點,所以它們之間互稱為兄弟節點。我們把沒有父節點的節點叫作...

二叉樹基礎

1.二叉樹的定義 每個結點最多只有兩棵子樹 子樹左右有順序之分 2.常見的二叉樹型別 滿二叉樹 看起來 完美 而又 平衡 的樹 完全二叉樹 首先從上至下,從左至右按順序給結點編號,再從下至上,從右至左按順序刪除結點。由此可見滿二叉樹是一棵特殊的完全二叉樹,而完全二叉樹是 缺胳膊少腿 的滿二叉樹。3....