資料結構之二叉樹
基本術語:
度:結點的子結點的個數;
樹高度(深度):樹中結點的最大層數;
分支結點:度大於 0的結點;
葉子結點:度為 0的結點;
結點層次:根結點為第一層,往下遞增;
結點深度:從根結點自頂向下逐層累加;
有序樹:從左到右,子樹有序;交換子結點位置樹不同;
無序樹:交換子結點後樹是相同的;
兩種特殊樹:
滿二叉樹:高度為h的二叉樹恰好有2^h-1個元素。
完全二叉樹:從滿二叉樹中刪除k個其編號為2^h -i個元素,1<=i<=k<2^h,所得到的的二叉樹。
#include
using
namespace std;
/* 二叉樹結點 */
template
<
class
t>
struct binarytreenode
binarytreenode
(const t& theelement)
binarytreenode
(const t& theelement, binarytreenode* theleftchild, binarytreenode* therightchild)};
/* 二叉樹鏈式描述 */
template
<
class
e>
class
linkedbinarytree
linkedbinarytree
(linkedbinarytree
* x)
~linkedbinarytree()
;/* 判斷二叉樹是否為空 */
bool
empty()
const
/* 獲取二叉樹元素個數 */
intsize()
const
/* 獲取二叉樹節點個數 */
intgetnode
(binarytreenode
* x)
return
(getnode
(x->leftchild)
+getnode
(x->rightchild)+1
);}/* 獲取二叉樹節點個數最多的層(寬度) */
intgetmaxnode
(binarytreenode
* x)
int maxwidth =0;
if(x-
>leftchild ==
null
&& x-
>rightchild ==
null
)else
return maxwidth;
}/* 交換二叉樹的左右子樹 */
binarytreenode
*swaptree
(binarytreenode
* x)
else
}/* 前序遍歷二叉樹 */
void
preorder
(binarytreenode
* x)
}/* 中序遍歷二叉樹 */
void
inorder
(binarytreenode
* x)
}/* 後序遍歷二叉樹 */
void
postorder
(binarytreenode
* x)
}/* 刪除二叉樹 */
void
erase()
/* 二叉樹插入元素 */
void
insertbinarytree
(e theelement)
else
else
if(p-
>leftchild !=
null
&& p-
>rightchild ==
null
)else
if(p-
>leftchild ==
null
&& p-
>rightchild !=
null
)else
if(p-
>leftchild !=
null
&& p-
>rightchild !=
null
)else
if(p-
>leftchild !=
null
&& p-
>rightchild ==
null
)else
if(p-
>leftchild ==
null
&& p-
>rightchild !=
null
)else}}
} treesize++;}
/* 獲取二叉樹的高度 */
inthigh
(binarytreenode
* x)
int lefthigh =
high
(x->leftchild)
;int righthigh =
high
(x->rightchild)
;return1+
(lefthigh > righthigh ? lefthigh : righthigh);}
/* 獲取左右子樹最大高度差 */
intgethighdifference
(binarytreenode
* x)};
//測試**
C 資料結構(樹 二叉樹)
樹的定義 樹是你 n 0 個節點的有限集t t為空是空樹 非空樹具有兩個條件。有且僅有乙個根節點作為樹根 其餘節點可分為m個互不相交的子集t1,tm。其中每乙個子集本手又是一顆樹,稱其為跟節點的子樹。遞迴思想 樹的二元組表示 t d,r d 樹t中的節點集合,r 樹中的節點關係。二元組另外一種表示 ...
資料結構 二叉樹 反轉二叉樹
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 ...
《資料結構》 二叉樹
二叉樹 是 n個結點的有限集,它或為空集,或由乙個根結點及兩棵互不相交的 分別稱為該根的左子樹和右子樹的二叉樹組成。二叉樹不是樹的特殊情況,這是兩種不同的資料結構 它與無序樹和度為 2的有序樹不同。二叉樹的性質 1 二叉樹第 i層上的結點數最多為 2 i 1 2 深度為 k的二叉樹至多有 2 k 1...