您現在的位置是:首頁 > 動作武俠首頁動作武俠
2021-04-11:判斷二叉樹是否是完全二叉樹?
- 2021-07-14
幾乎完全二叉樹
2021-04-11:判斷二叉樹是否是完全二叉樹?
福大大 答案2021-04-11:
按層遍歷。
程式碼用golang編寫。程式碼如下:
package mainimport ( “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)