美文网首页
[二叉树] 判断二叉树是否是完全二叉树

[二叉树] 判断二叉树是否是完全二叉树

作者: 爱上落入尘世间的你 | 来源:发表于2017-11-16 11:54 被阅读0次

简单来说, 完全二叉树是指按照层次进行遍历的时候所得到的序列与满二叉树相对应

这里提供两种思路和相应的代码:

1. 利用与满二叉树的对应关系

任意的一个完全二叉树, 都可以补上一些空节点来形成一棵满二叉树, 当然了, 这些补上的节点都是叶子节点.我们假设这些补上的节点为空节点, 那么在对这棵补成满二叉树的树进行层次遍历的时候, 那些补上的空节点都一定会出现在遍历序列的结尾, 就是一系列的原节点后面跟着一系列补上的空节点, 不会交替出现. 利用上述性质, 可以肯定, 如果空节点和原节点交替出现了, 那么这棵树一定不是完全二叉树.

// 由于如何用程序比较简单的实现把二叉树补满, 我暂时没有思路...

2. 根据完全二叉树的性质在层次遍历的过程中做判断

具体流程如下:

  1. 对二叉树进行层次遍历
  2. 如果当前节点有右孩子, 没有左孩子, 返回 false
  3. 如果当前节点有左孩子, 没有右孩子, 那么之后的节点都必须为叶子节点(即没有孩子), 否则返回 false
  4. 遍历过程中如果不返回 false, 遍历结束后返回 true
function isCompleteBinaryTree(root)
{
    let result = true
    let leaf
    root.levelIterate(function(node)
    {
        if( ! touch(node))
        {
            result = false
            return false // 终止遍历
        }
    })
    return result

    /*
     * 层次遍历过程中对每个节点执行的操作
     *
     * @param node - 当前节点
     */
    function touch(node)
    {
        if(leaf)
        {
            return ( ! node.left) && ( ! node.right)
        }
        else
        {
            if(node.right && ! node.left)
            {
                return false
            }

            if(node.left && ! node.right)
            {
                leaf = true
            }

            // node.left && node.right
            return true
        }
    }
}

相关文章

  • 958. 二叉树的完全性检验

    判断是否是完全二叉树 给定一个二叉树,确定它是否是一个完全二叉树。 百度百科中对完全二叉树的定义如下: 若设二叉树...

  • 关于二叉树的算法题

    前序遍历中序遍历后序遍历判断是否是平衡二叉树判断是否是对称二叉树判断二叉树高度按照层遍历二叉树判断二叉树宽度

  • 1 二叉树的最近公共祖先(leetcode 236) 2 判断是否为平衡二叉树 3 判断二叉树是否为满二叉树 4 ...

  • 平衡二叉树

    题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。

  • 39、平衡二叉树

    题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。

  • 牛客-剑指0ffer-平衡二叉树

    题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。

  • 19.判断二叉平衡树

    题目 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 代码

  • 平衡二叉树

    题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 平衡二叉树(Self-balancing binary ...

  • 剑指 offer:39、平衡二叉树

    39. 平衡二叉树 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 解题思路: 平衡二叉树:Wiki:在...

  • 面试题:平衡二叉树

    题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 知识点 平衡二叉树 Qiang的思路 平衡二叉树是指一个...

网友评论

      本文标题:[二叉树] 判断二叉树是否是完全二叉树

      本文链接:https://www.haomeiwen.com/subject/fbakvxtx.html