#include
#include
#include
//業務結點
typedef
struct node_stnode_st;
//二叉樹模型
typedef
struct d_treed_tree;
//中序遍歷
void
inorder
(void
*node)
//計算葉子數量
void
countleaf
(d_tree *node,
int*num)
}//求樹的深度
intdepth
(d_tree *node)
if(node->lchild)
depthval =1+
(depthlef > depthrig ? depthlef:depthrig)
;return depthval;
}//二查樹的拷貝
d_tree *
copy_tree
(d_tree *old)
newnode =
(d_tree *
)malloc
(sizeof
(d_tree));
newnode->cur.value = old->cur.value;
if(old->lchild)
newlp =
copy_tree
(old->lchild)
;else
newlp =
null;if
(old->rchild)
newrp =
copy_tree
(old->rchild)
;else
newrp =
null
; newnode->lchild = newlp;
newnode->rchild = newrp;
return newnode;
}//測試主函式
intmain()
node[0]
.lchild =
(d_tree *
)&node[1]
; node[0]
.rchild =
(d_tree *
)&node[2]
; node[1]
.lchild =
(d_tree *
)&node[3]
; node[2]
.rchild =
(d_tree *
)&node[4]
;//拷貝前的遍歷
printf
("old tree inorder:");
inorder
(&node[0]
);printf
("\n");
//拷貝後的遍歷
d_tree *new;
new =
copy_tree
(&node[0]
);printf
("new tree inorder:");
inorder
(new)
;printf
("\n");
//列印葉子數
countleaf
(&node[0]
,&num)
;printf
("num %d\n"
,num)
;//列印樹的深度
printf
("depth %d\n"
,depth
(new));
return0;
}
下期將介紹二查樹非遞迴遍歷的做法 二叉樹的簡單操作
define crt secure no warnings define m 100 typedef char datatype typedef struct node 二叉鍊錶的結構體 bitnode,bitree define queue size 100 typedef bitree queu...
二叉樹的簡單操作
一,定義 在電腦科學中,二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作 左子樹 left subtree 和 右子樹 right subtree 二叉樹常被用於實現二叉查詢樹和二叉堆。二,特點 1,二叉樹的每個結點至多只有二棵子樹 不存在度大於2的結點 2,二叉樹的子樹有左右之分,次序不能顛...
二叉樹的簡單操作
define crt secure no warnings define m 100 typedef char datatype typedef struct node 二叉鍊錶的結構體 bitnode,bitree define queue size 100 typedef bitree queu...