順序儲存結構最好用於完全二叉樹(普通樹也可以,把空節點資料設為^即可),鏈式儲存結構任何二叉樹都可以
性質:①第i層最多有2i-1個節點,前i層最多有2i-1個節點
②零度頂點=二度頂點+1
③n個頂點的完全二叉樹深度為[log2n]+1
④對一棵完全二叉樹編號為i的節點,
(i)若i=1,則無雙親,否則雙親是[i/2]
(ii)
i<=(n-1)/2 有左有右
(n-1)/2n/2 無左無右
typedef
char btree[maxsize]
;
注意:如果節點資料是』#』,設為空節點
按層序遍歷輸入,$結束
void
create
(btree t)
i=0;//別忘了
cin>>data;
while
(data!=
'$')
}
先序
void
preorder
(btree t)
cout<}void
preorder_use
(btree t,
int i)
//preorder呼叫的,不是在主函式中用的
if(t[
2*i+2]
!='#'
)}
中序
void
inorder
(btree t)
cout<}void
inorder_use
(btree t,
int i)
cout<(t[2
*i+2]!=
'#')
}
後序
void
postorder
(btree t)
cout<}void
postorder_use
(btree t,
int i)
if(t[
2*i+2]
!='#'
) cout<;}
層序
void
levelorder
(btree t)
for(j=
0;j<=i;j++)}
}
深度
不斷除二,累計即可
int
depth
(btree t)
j++;while
(j!=0)
return i;
}
某行某列節點的值
注意要include
int
value
(btree t,
int line,
int order)
順序二叉樹
從資料儲存來看,陣列儲存方式和樹的儲存方式可以相互轉換,即陣列可 以轉換成樹,樹也可以轉換成陣列。順序二叉樹通常只考慮完全二叉樹 第n個元素的左子節點為 2 n 1 第n個元素的右子節點為 2 n 2 第n個元素的父節點為 n 1 2 n 表示二叉樹中的第幾個元素 按0開始編號如圖所示 相當於陣列的...
樹 二叉樹 滿二叉樹 完全二叉樹 完滿二叉樹
目錄名稱作用根 樹的頂端結點 孩子當遠離根 root 的時候,直接連線到另外乙個結點的結點被稱之為孩子 child 雙親相應地,另外乙個結點稱為孩子 child 的雙親 parent 兄弟具有同乙個雙親 parent 的孩子 child 之間互稱為兄弟 sibling 祖先結點的祖先 ancesto...
二叉樹 二叉樹
題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...