爱问知识人 爱问教育 医院库

急急~判断一棵二叉树是满二叉树的算法!

首页

急急~判断一棵二叉树是满二叉树的算法!


        

提交回答

全部答案

    2018-05-15 04:38:39
  •   我的思路是利用满二叉树的性质来判断。满二叉树一定符合 节点数 = 2的n次方 -1 (n为深度)
    所以可以先遍历二叉树,并记录深度和节点数,最后做出判断
    #include
    void inorder(bintree *t,int currentDeep)
    {
    if(*t!=NULL)
    {
    if(currentDeep>deep) deep=currentDeep;
    /* 如果当前深度大于记录的深度,则更新深度 */
    countNodes ; /* 节点数加一 */
    inorder(t->lchild,currentDeep 1);
    /* 访问当前节点的左孩子,并把当前节点的深度 1传给调用函数 */
    inorder(t->rchild,currentDeep 1);
    /* 访问当前节点的右孩子,并把当前节点的深度 1传给调用函数 */
    }
    }
    main()
    {
    /* p 为二叉树的根节点,其定义略 */
    int currentDeep=1; /* currentDeep用于记录当前深度
    static int deep=0; /* 静态变量deep用于记录已检索的最大深度 */
    static int countNodes=0;
    /* 静态变量countNodes用于记录已检索的节点数目 */
    inorder(p,currentDeep);
    /* 中序遍历二叉树从而得到二叉树的深度以及节点数目 */
    if(countNodes<(pow(2,deep)-1)) printf("这不是一棵满二叉树。
      ");
    else printf("这是一棵满二叉树。
      ");
    /* 利用满二叉树的节点数一定等于2的深度次方减1做出判断 */
    /* pow函数的作用是求2的deep次方 */
    camb_yang 同学满二叉树为什么就不用判断呢?。

    徐***

    2018-05-15 04:38:39

类似问题

换一换
  • 花鸟鱼虫 相关知识

  • 吃喝玩乐
  • 娱乐休闲

相关推荐

正在加载...
最新资料 推荐信息 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):