一、二叉樹的定義:度數(每個節點所有的子樹的最大值)為2的數。
二、二叉樹的性質:
1.在二叉樹的第 i 層上最多有2 ^ (i - 1) 個結點;
2.深度為 k的二叉樹最多有2 ^ k - 1 個結點;
2-1.一棵深度為 k 且有 2 ^ k - 1 個結點的二叉樹被稱為滿二叉樹;
2-2.將滿二叉樹的每乙個結點從上而下,從左到右編上序號(1~2 ^ k - 1)。一棵深度為 k ,有 n 個結點的二叉樹當且僅當其每乙個結點都與深度為 k 的滿二叉樹一一對應時(即只有最後倒數第二層有度數不為2的結點,只有最後一層結點相對於滿二叉樹有缺失,且最後一層缺失的結點是從最右到左連續的),這棵樹被稱為完全二叉樹;
3.對於任意一棵二叉樹,其葉結點數一定比度為2的結點數多1。即:n0 = n2 + 1;
4.具有n 個結點的完全二叉樹的深度為 floor(log2 n) + 1(floor指向下取整);
5.對於一棵 n 個結點的完全二叉樹,對任意乙個結點(編號為 i ),有:
5-1.如果 i = 1,那麼此結點為根結點,否則其父結點編號為 floor(i / 2)(在程式中可直接寫為 i / 2);
5-2.如果 2*i > n,則此結點沒有孩子,是根結點;如果 2*i == n,則此結點只有左孩子,其編號為 2*i ;否則此節點有左孩子和右孩子,編號分別為 2*i 和 2*i + 1。
三、二叉樹的儲存:鏈式儲存結構:
1struct
node2;
6 node* bt;//
根結點
四:二叉樹的遍歷(每種遍歷在二叉樹為空時不進行操作)
1.先序遍歷:(1)訪問根結點;(2)先序遍歷左子樹;(3)先序遍歷右子樹(根->左->右)
2.中序遍歷:(1)中序遍歷左子樹;(2)訪問根結點;(3)先序遍歷右子樹(左->根->右)
3.後序遍歷:(1)後序遍歷左子樹;(2)後序遍歷右子樹;(3)訪問根結點(左->右->根)
void pre(node* bt)//先序遍歷
}void
in(node* bt)//
中序遍歷
}void post(node* bt)//
後序遍歷
}
資料結構 二叉樹 反轉二叉樹
include using namespace std define maxsize 1000 struct binary tree node class queue queue queue void queue push binary tree node btn binary tree node ...
資料結構知識整理10二叉樹
二叉樹也稱二分樹,是有限的節點集合,這個集合或者是空,或者是由乙個根節點和兩棵互不相交的稱為左子樹和右子樹的二叉樹組成。二叉樹結構簡單,儲存效率高,運算演算法也相對簡單,而且任何m次樹都可以轉化為二叉樹結構。因此二叉樹具有很重要的地位。二叉樹和 2次樹的區別,對於非空樹 1 二次樹中至少有乙個節點的...
《資料結構》 二叉樹
二叉樹 是 n個結點的有限集,它或為空集,或由乙個根結點及兩棵互不相交的 分別稱為該根的左子樹和右子樹的二叉樹組成。二叉樹不是樹的特殊情況,這是兩種不同的資料結構 它與無序樹和度為 2的有序樹不同。二叉樹的性質 1 二叉樹第 i層上的結點數最多為 2 i 1 2 深度為 k的二叉樹至多有 2 k 1...