2021-04-11:判断二叉树是否是完全二叉树?

Posted 福大大架构师每日一题

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021-04-11:判断二叉树是否是完全二叉树?相关的知识,希望对你有一定的参考价值。

2021-04-11:判断二叉树是否是完全二叉树?


福大大 答案2021-04-11:


按层遍历。


代码用golang编写。代码如下:

package main
import ( "container/list" "fmt")
func main() { head := &TreeNode{Val: 1} head.Left = &TreeNode{Val: 2} head.Right = &TreeNode{Val: 3} head.Left.Left = &TreeNode{Val: 4} //head.Right.Right = &TreeNode{Val: 5} ret := isCBT1(head) fmt.Println(ret)}
//Definition for a binary tree node.type TreeNode struct { Val int Left *TreeNode Right *TreeNode}
func isCBT1(head *TreeNode) bool { if head == nil { return true } queue := list.New() // 是否遇到过左右两个孩子不双全的节点 leaf := false var l *TreeNode var r *TreeNode queue.PushBack(head) for !(queue.Len() == 0) { head = queue.Remove(queue.Front()).(*TreeNode) l = head.Left r = head.Right if // 如果遇到了不双全的节点之后,又发现当前节点不是叶节点 (leaf && (l != nil || r != nil)) || (l == nil && r != nil) { return false } if l != nil { queue.PushBack(l) } if r != nil { queue.PushBack(r) } if l == nil || r == nil { leaf = true } } return true}

执行结果如下:

***

[左神java代码](https://github.com/algorithmzuo/algorithmbasic2020/blob/master/src/class12/Code01_IsCBT.java)

[评论](https://user.qzone.qq.com/3182319461/blog/1618097666)


以上是关于2021-04-11:判断二叉树是否是完全二叉树?的主要内容,如果未能解决你的问题,请参考以下文章

判断一棵树是否是完全二叉树

二叉树oj ----->判断二叉树是否为完全二叉树

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

二叉树——判断一棵树是否是完全二叉树

NC60 判断一棵二叉树是否为搜索二叉树和完全二叉树

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