二叉樹的簡單操作框架(C語言)

2021-09-27 08:57:35 字數 1893 閱讀 8173

#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...