二叉樹基本操作

2021-07-27 04:39:27 字數 1419 閱讀 7393

#include #include #define maxsize 100

typedef char elemtype;

typedef struct node

btnode;

void createbtnode(btnode *&b,char *str) //由str串建立二叉鏈

}} j++;

ch=str[j]; }}

btnode *findnode(btnode *b,elemtype x) //返回data域為x的節點指標

}btnode *lchildnode(btnode *p) //返回*p節點的左孩子節點指標

btnode *rchildnode(btnode *p) //返回*p節點的右孩子節點指標

int btnodedepth(btnode *b) //求二叉樹b的深度

}void dispbtnode(btnode *b) //以括號表示法輸出二叉樹 }}

int btwidth(btnode *b) //求二叉樹b的寬度

qu[maxsize]; //定義順序非迴圈佇列

int front,rear; //定義隊首和隊尾指標

int lnum,max,i,n;

front=rear=0; //置隊列為空隊

if (b!=null)

if (b->rchild!=null) //右孩子入隊

}max=0;lnum=1;i=1;

while (i<=rear)

lnum=qu[i].lno;

if (n>max) max=n;

} return max;

} else

return 0;

}int nodes(btnode *b) //求二叉樹b的節點個數

}int leafnodes(btnode *b) //求二叉樹b的葉子節點個數

}void destroybtnode(btnode *&b)

}int main()

printf("\n");

printf(" (3)二叉樹b的深度:%d\n",btnodedepth(b));

printf(" (4)二叉樹b的寬度:%d\n",btwidth(b));

printf(" (5)二叉樹b的節點個數:%d\n",nodes(b));

printf(" (6)二叉樹b的葉子節點個數:%d\n",leafnodes(b));

printf(" (7)釋放二叉樹b\n");

destroybtnode(b);

return 0;

}

執行結果:

二叉樹基本操作

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 include using namespace std template struct binode template class bitree bitree datatype a,intn bitree void preorder void inorder void...