数算第五章书面作业

5.1

(1)由于内部节点度都为2,故内部节点数为n-1,总数为2n-1;
(2)我们可以设根节点值为一,每个子节点的值为父节点的二分之一,则第li层的叶子节点的值恰好为2的-li+1次方,则有子节点的和为父节点的值,由此将所有的叶子节点的值之和等于他们的父节点,最终等于根节点的值,因而等于一,证毕。

5.2

总有a<=b<=c;理由如下:
由二叉搜索树的性质我们知道位于路径左边的值可以跟路径上的值向上搜索到同一个父节点,而左边的值是由这个父节点向左延申,故而小于路径上的值。
同理路经右边的值都是大于路径上的值

5.3

bool  IsComplete(TreeNode<T>* root)
{
    //1.树为空,返回错误
   if (root==NULL)
   {
       return false;
   }
   //2.树不为空
   queue<TreeNode<T>*>  q;
   q.push(root);
   while (!q.empty())
   {
       TreeNode<T>* top=q.front();
       //2.1如果该节点两个孩子都有,则直接pop
       if (top->left&&top->right)
       {
           q.pop();
           q.push(top->left);
           q.push(top->right);
       }
       //2.2如果该节点左孩子为空,右孩子不为空,则一定不是完全二叉树
       if (top->left==NULL&&top->right)
       {
           return false;
       }
       //2.3如果该节点左孩子不为空,右孩子为空或者该节点为叶子节点,则该节点之后的所有结点都是叶子节点
       if ((top->left&&top->right==NULL)||(top->left==NULL&&top->right==NULL))
       {
           q.pop();
           //则该节点之后的所有结点都是叶子节点
           while (!q.empty())
           {
               top=q.front();
               if (top->left==NULL&&top->right==NULL)
               {
                   q.pop();
               }
               else
               {
                   return false;
               }
           }
           return true;
       }
   }
   return true;  
}

复杂度为O(N)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 9,929评论 1 31
  • (26)大难不死 最后的最后却是帝君救了他二人。作为天地共主,自然不能要天定的储君殒命于此,至于白浅,不过念在狐帝...
    女少月半阅读 4,551评论 0 3
  • 十字路口,匆匆行人 是谁在喃喃自语 淡淡相思随风飘荡 泪水溢出眼眶滴落尘埃 车窗摇下,明眸浅笑 当时是谁映入了谁的...
    书叶随风阅读 1,651评论 0 2
  • 很多妈妈哭诉,上了小学以后,自家的孩子和别人家的孩子差距越来越明显。 别人家的孩子作文已经写出了哲学的味道 自家的...
    一诺天下阅读 3,868评论 0 1
  • 寒假里,我阅读了《钢铁是怎样炼成的》这本书,它令我记忆深刻,感触颇深。 这本书主要讲述了一个叫保尔·柯察金身残志坚...
    凯的小棉袄阅读 2,860评论 0 2