当前位置:  操作系统>Linux

二叉树常用算法(求总节点个数和叶子节点个数)

 
    发布时间:2014-1-16  


    本文导语:  二叉树是每个节点最多有两个子树的有序树。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。值得注意的是,二叉树不是树的特殊情形。在图论中,二叉树...

  二叉树是每个节点最多有两个子树的有序树。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。值得注意的是,二叉树不是树的特殊情形。在图论中,二叉树是一个连通的无环图,并且每一个顶点的度不大于3。有根二叉树还要满足根结点的度不大于2。有了根结点后,每个顶点定义了唯一的根结点,和最多2个子结点。然而,没有足够的信息来区分左结点和右结点。

  二叉树数据结构:

struct BinaryTree  

{      char value;      BinaryTree* left;      BinaryTree* right;   };     //求二叉树中的节点个数   //(1)如果二叉树为空,节点个数为0   //(2)如果二叉树不为空,二叉树节点个数 = 左子树节点个数 + 右子树节点个数 + 1   int getNodeNums(BinaryTree* pRoot)   {      if(pRoot==NULL)          return 0;      return getNodeNums(pRoot->left)+getNodeNums(pRoot->right)+1;   }     //求二叉树中叶子节点的个数   //(1)如果二叉树为空,返回0   //(2)如果二叉树不为空且左右子树为空,返回1   //(3)如果二叉树不为空,且左右子树不同时为空,返回左子树中叶子节点个数加上右子树中叶子节点个数   int getLeafNodeNums(BinaryTree* pRoot)   {      if(pRoot==NULL)          return 0;      if(pRoot->left==NULL && pRoot->right==NULL)          return 1;      int leftNums = getLeafNodeNums(pRoot->left);      int rightNums = getLeafNodeNums(pRoot->right);      return leftNums+rightNums;   }  


    您可能感兴趣的文章:

  • 本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
    转载请注明:文章转载自:[169IT-IT技术资讯]
    本文标题:二叉树常用算法(求总节点个数和叶子节点个数)
相关文章推荐:


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3