如何求2叉树叶子节点(递归)
来源:互联网 发布:英国法国德国人 知乎 编辑:程序博客网 时间:2024/04/27 15:03
核心代码:
int leaf(BiTreeNode *head){if(head==NULL) return 0; //当前节点为空,返回0else{if(head->LeftChild==NULL && head->RightChild==NULL) //当前节点的左右孩子节点为空,该节点为孩子节点,返回1return 1;else return leaf(head->RightChild)+leaf(head->LeftChild);//左右孩子有一个非空,那么递归求左右孩子的叶子节点,相加返回}}
全部代码:
#include<iostream>#include<assert.h>using namespace std; typedef struct Lnode{char data;struct Lnode *LeftChild;struct Lnode *RightChild;}BiTreeNode;void Initiate(BiTreeNode **head){(*head)=(BiTreeNode *)malloc(sizeof(BiTreeNode));assert((*head)!=NULL); //if the judging conditio is true,this statement is not executed(*head)->LeftChild=NULL;(*head)->RightChild=NULL;}BiTreeNode * InsertLeftChild(BiTreeNode *head,char a ){if(head==NULL) return NULL;BiTreeNode * p,*t;t=head->LeftChild;p=(BiTreeNode *)malloc(sizeof(BiTreeNode));assert(p!=NULL);p->data=a;p->RightChild=NULL;p->LeftChild=t;head->LeftChild=p;return head->LeftChild;}BiTreeNode *InsertRightChild(BiTreeNode *head,char a){if(head==NULL) return NULL;BiTreeNode *p,*t;t=head->RightChild;p=(BiTreeNode *)malloc(sizeof(BiTreeNode));assert(p!=NULL);p->data=a;p->LeftChild=NULL;p->RightChild=t;head->RightChild=p;return head->RightChild;}void Destroy(BiTreeNode *head){if(head!=NULL && head->LeftChild!=NULL)Destroy(head->LeftChild);if(head!=NULL && head->RightChild!=NULL)Destroy(head->RightChild);free(head);}void LDR(BiTreeNode *head){if(head!=NULL){LDR(head->LeftChild);cout<<head->data<<" ";LDR(head->RightChild);}}int leaf(BiTreeNode *head){if(head==NULL) return 0;else{if(head->LeftChild==NULL && head->RightChild==NULL)return 1;else return leaf(head->RightChild)+leaf(head->LeftChild);}}void main(){BiTreeNode *head,*p,*q;Initiate(&head);head->data='g';p=InsertLeftChild(head,'a');p=InsertLeftChild(p,'b');p=InsertRightChild(head,'c');LDR(head);cout<<endl;cout<<"the leaf node:"<<leaf(head)<<endl;Destroy(head);system("pause");}
0 0
- 如何求2叉树叶子节点(递归)
- 二叉树(7)----求二叉树叶子节点个数,递归和非递归
- 求二叉树叶子节点的个数
- 求二叉树叶子节点数
- 求二叉树叶子节点的个数
- 求二叉树叶子节点的个数/求二叉树第k层的节点个数(递归思想)
- 求二叉树叶子节点数目的中序遍历递归算法(已经在visual c++ 6.0中调试通过)
- 求二叉树叶子节点的最浅深度
- 笔试题:求二叉树叶子节点的个数
- 求二叉树叶子结点的递归实现
- 求二叉树叶子节点的个数+求二叉树第k层的节点个数
- 求二叉树叶子节点的个数/求二叉树第k层的节点个数。
- 求二叉树叶子节点的个数 && 求第K层的节点个数
- 求二叉树叶子节点的个数/求二叉树第k层的节点个数。
- 求二叉树叶子节点的个数/求二叉树第k层的节点个数
- 二叉树叶子节点迭代器
- B树叶子节点split
- 二叉树叶子节点数
- rmdir
- 利用标准API产生物料信息
- 后缀数组专题
- JAVA异常
- jQuery这些代码你都不会,你还有什么好说的!!!
- 如何求2叉树叶子节点(递归)
- 修改mac同时打开最大文件数
- svn库迁移-备份和恢复-svnadmin
- 部署Java jar为Windows后台服务
- mfc通过URL传递参数时处理特殊字符
- rm
- swf图片下载预览
- 文件后缀名的过滤
- Web app 前端框架ratchet使用push.js界面跳转后,js代码无法执行的解决方法