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