二、二叉樹的遍歷
三、二叉樹的應用
#define maxsize 100
struct treenode
;treenode t[maxsize]
;//定義乙個陣列t,按照從上至下,從左至右的順序依次儲存完全二叉樹的結點
for(
int i=
0;i)
struct elemtype
typedef
struct bitnodebitnode,
*bitree;
//定義一棵樹
bitree root=
null
;//插入根節點
root=
(bitree)
malloc
(sizeof
(bitnode));
root->data=
;root->lchild=
null
;root->rchild=
null
;//插入新結點
bitnode *p=
(bitnode *
)malloc
(sizeof
(bitnode));
p->data=
;p->lchild=
null
;p->rchild=
null
;root->lchild=p;
//作為根節點的左孩子
可對應於字首表示式
void
preorder
(bitree t)
}
可對應於中綴表示式(需要加界限符)
void
inorder
(bitree t)
}
可對應於字尾表示式
void
postorder
(bitree t)
}
//二叉樹的結點(鏈式儲存)
typedef
struct bitnodebitnode,
*bitree;
//鏈式佇列結點
typedef
struct linknodelinknode;
typedef
struct
linkqueue;
void
levelorder
(bitree t)
}
int
treedepth
(bitree t)
else
}
二叉樹的中序遍歷序列
q1:如何找到指定結點p在中序遍歷序列中的前驅
q2:如何找到p的中序後繼
思路:從根節點出發,重新進行一次中序遍歷,指標q訪問當前訪問的結點,指標pre記錄上乙個被訪問的結點
(1)當q= =p時,pre是前驅
(2)當pre= =p時,q為後繼
二叉樹基本操作
tree.h ifndef tree h define tree h include typedef int element 定義二叉樹 typedef struct nodetreenode void preorder treenode root 遞迴前序遍歷 void inorder treen...
二叉樹基本操作
一.二叉樹的定義 二.二叉樹的建立 定義一棵無資料的二叉樹 6 int left size 7 int right size 為了操作簡便,我們定義一棵不需要儲存資料的二叉樹,只要能儲存節點之間的邏輯關係就行,所以用兩個陣列來表示。left i 第i個節點的左子節點的序號 right i 第i個節點...
二叉樹基本操作
include include define maxsize 100 typedef char elemtype typedef struct node btnode void createbtnode btnode b,char str 由str串建立二叉鏈 j ch str j btnode f...