樹結構是一種資料結構,它由節點(node)以及連節點的邊(edge)構成。
如果一棵樹具有乙個叫為根(root)的特殊節點,那麼這棵樹稱作有根數(rooted tree)。
樹結構有如下的定義:
二叉樹的定義:擁有乙個根節點,所有節點的子節點不超過2的樹稱為二叉樹。
#include
#include
using namespace std;
const
int max =
100000
;const
int nil =-1
;struct node
;node t[max]
;int n,d[max]
,h[max]
;void
setdepth
(int u,
int d)
intsetheight
(int u)
intgetsibling
(int u)
void
print
(int u)
}int
main()
for(
int i =
0;i(t[i]
.parent == nil)
root = i;
setdepth
(root,0)
;setheight
(root)
;for
(int i =
0;i)print
(i);
return0;
}/*input:
90 1 4
1 2 3
2 -1 -1
3 -1 -1
4 5 8
5 6 7
6 -1 -1
7 -1 -1
8 -1 -1
*//*
output
node 0: parent = 0, silbing = 4, degree = 2, depth = 0, height = 3, internal node
node 1: parent = 0, silbing = 1, degree = 2, depth = 0, height = 1, internal node
node 2: parent = 1, silbing = 2, degree = 0, depth = 0, height = 0, leaf
node 3: parent = 1, silbing = 3, degree = 0, depth = 0, height = 0, leaf
node 4: parent = 0, silbing = 4, degree = 2, depth = 0, height = 2, internal node
node 5: parent = 4, silbing = 5, degree = 2, depth = 0, height = 1, internal node
node 6: parent = 5, silbing = 6, degree = 0, depth = 0, height = 0, leaf
node 7: parent = 5, silbing = 7, degree = 0, depth = 0, height = 0, leaf
node 8: parent = 4, silbing = 8, degree = 0, depth = 0, height = 0, leaf
*/
構建二叉樹 遍歷二叉樹
陣列法構建二叉樹 public class main public static void main string args 用陣列的方式構建二叉樹 public static void createbintree 把linkedlist集合轉成二叉樹的形式 for int j 0 j 最後乙個父節...
二叉樹 二叉樹
題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...
玩轉二叉樹(二叉樹的遍歷)
時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 給定一棵二叉樹的中序遍歷和前序遍歷,請你先將樹做個鏡面反轉,再輸出反轉後的層序遍歷的序列。所謂鏡面反轉,是指將所有非葉結點的左右孩子對換。這裡假設鍵值都是互不相等的正整數。輸入格式 ...