首页 > 其他分享 >计算二叉树中度为二的结点个数

计算二叉树中度为二的结点个数

时间:2022-10-12 13:57:39浏览次数:47  
标签:lchild 结点 中度 度为 DsonNodes 二叉树 rchild NULL

计算度为二的结点个数

递归法(一)

算法思想:用递归的数学模型来理解:

f(b)=0                              //若b是空树则本身不是度为二的结点,也无左右孩子,总共的度为二结点个数为0
f(b)=f(b->lchild)+f(b->rchild)+1    //若b是双分支结点,则总共的度为二结点个数为其自身加上其左右子树度为二结点个数
f(b)=f(b->lchild)+f(b->rchild)      //若b为其他情况(不为空且度也不为2),则总共度为二结点个数为左右子树度为二结点只和

代码如下:

int DsonNodes(BiTree b){
    if(b==NULL)                                  //空结点
        return 0;
    else if(b->lchild!=NULL&&b->rchild!=NULL)    //双分支结点
        return DsonNodes(b->lchild)+DsonNodes(b->rchild)+1;
    else                                         //其他情况(度为0或1)   
        return DsonNodes(b->lchild)+DsonNodes(b->rchild);
}

递归法(二)

算法思想:遍历二叉树,用一个全局变量n来记录度为二结点个数,每遍历一个结点时判断度是否为2,若是则n++

代码如下:

int n=0;
void DsonNodes(BiTree b,int &n){                 //先序遍历二叉树
    if(b!==NULL){
        if(b->lchild!=NULL&&b->rchild!=NULL)     //若结点度为二则n++
            n++;
        DsonNodes(b->lchild);
        DsonNodes(b->rchild);
    }
}

标签:lchild,结点,中度,度为,DsonNodes,二叉树,rchild,NULL
From: https://www.cnblogs.com/Auous/p/16784259.html

相关文章

  • 交换二叉树的所有左右子树
    递归方式交换所有子树递归思想:把一个复杂问题抽象化,在用调用自身的方式求解问题算法思想:把一颗二叉树抽象成一个根结点和左右子结点,先交换左孩子的左右子树,再交换右孩......
  • LeetCode 二叉树遍历算法题解 All In One
    LeetCode二叉树遍历算法题解AllInOne树的遍历/TreeTraversal主要看根节点Root的遍历顺序:前,中,后前序遍历(Root,Left,Right)先访问根节点,然后遍历左......
  • 算法练习-第十六天【二叉树】
    二叉树的深度与高度二叉树的深度:从根节点到该节点的最长简单路径边的条数或节点数(取决于深度是否从1开始)二叉树的高度:从该节点到叶子节点的最长简单路径边的条数或节点数......
  • //按照完全二叉树的层次顺序一次输入节点信息建立二叉链表的算法
    //按照完全二叉树的层次顺序一次输入节点信息建立二叉链表的算法#include<stdio.h>#include<stdlib.h>typedefcharDataType;typedefstructnode{DataT......
  • 代码随想录 | 二叉树
    226.翻转二叉树给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。输入:root=[4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]ψ(`∇´)ψ我的思路还是用了层序......
  • 二叉树广义表的算法生成 (A(B(,D(E,F)),C))
     #include<stdio.h>#include<stdlib.h>typedefcharDataType;typedefstructnode{DataTypedata;structnode*lchild,*rchild;}BinTNode;ty......
  • 平衡二叉树
    代码publicclassMain{publicstaticvoidmain(String[]args){int[]arr={10,11,6,9,7,8};AVLTreebinarySortTree=newAVLTree();fo......
  • OFF27 二叉树镜像
    publicTreeNodemirrorTree(TreeNoderoot){if(root==null){returnnull;}TreeNodeleft=mirrorTree(root.left);T......
  • OFF28 对称二叉树
    publicbooleanisSymmetric(TreeNoderoot){if(root==null){returntrue;}returnjudge(root.left,root.right);}......
  • Leecode 111.二叉树的最小深度
    /**Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*......