二叉樹的基本操作

2021-10-22 18:04:18 字數 1557 閱讀 5085

二、二叉樹的遍歷

三、二叉樹的應用

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