- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
叶节点和总结点关系
#include #defineNULL0 #include typedefstructnode { chardata; structnode*lchild,*rchild; }NODE; intcount; NODE*crt_bt_pre()/*二叉树先序创建算法*/ { NODE*bt; charch; printf(\n\t\t\t); scanf(%c,ch); getchar(); if(ch==)bt=NULL; else { bt=(NODE*)malloc(sizeof(NODE)); bt-data=ch; printf(\n\t\t\t请输入%c结点的左孩子:,bt-data); bt-lchild=crt_bt_pre(); printf(\n\t\t\t请输入%c结点的右孩子:,bt-data); bt-rchild=crt_bt_pre(); } return(bt); } voidPreorder(NODE*bt)/*二叉树先序递归遍历算法*/ { if(bt!=NULL) { printf(\n\t\t\t%c,bt-data); Preorder(bt-lchild); Preorder(bt-rchild); } } voidInorder(NODE*bt) { if(bt!=NULL) { Inorder(bt-lchild); printf(\n\t\t\t%c,bt-data); Inorder(bt-rchild); } } voidPostorder(NODE*bt) { if(bt!=NULL) { Postorder(bt-lchild); Postorder(bt-rchild); printf(\n\t\t\t%c,bt-data); } } intCountLeaf(NODE*bt)/*求二叉树叶子结点数的递归遍历算法*/ { if(bt==NULL) return0; if(bt-lchild==NULLbt-rchild==NULL) count++; CountLeaf(bt-lchild); CountLeaf(bt-rchild); return(count); } intCountNode(NODE*bt)/*求二叉树结点数的递归遍历算法*/ { if(bt==NULL) return0; else count++; CountNode(bt-lchild); CountNode(bt-rchild); return(count); } intTreeDepth(NODE*bt)/*求二叉树深度的递归遍历算法*/ { intx,y; if(bt==NULL) return0; else x=TreeDepth(bt-lchild); y=TreeDepth(bt-rchild); if(xy) return(x+1); else return(y+1); } voidmain() { NODE*bt; charchoice; intj=1; intx; while(j) { printf(\n\n\n); printf(\t\t\t-二叉树的基本运算--\n); printf(\n\t\t\t************************************); printf(\n\t\t\t*1-------建二差树*); printf(\n\t\t\t*2-------先序遍历*); printf(\n\t\t\t*3-------中序遍历*); printf(\n\t\t\t*4-------后序遍历*); printf(\n\t\t\t*5-------统计叶子数*); printf(\n\t\t\t*6-------统计结点数*); printf(\n\t\t\t*7-------求二叉树深度*); printf(\n\t\t\t*0-------退出*); printf(\n\t\t\t************************************); printf(\t\t\t请选择菜单号(0--7):); scanf(%c,choice);getchar(); if(ch
文档评论(0)