1 題目描述
給定一個二叉樹,判斷其是否為一個完全二叉樹。
來自Wikipedia的完全二叉樹定義:
在一個完全二叉樹中,除了最后一層可能未被完全填充外,其它所有層均被完全填充,且最后一層的節點盡可能靠左。
最后一層h的節點數介于區間[1, 2^h]。
注:節點數介于[1, 100]。
例子1:
輸入:[1,2,3,4,5,6]
輸出:true
例子2:
輸入:[1,2,3,4,5,null,7]
輸出:false
題目出處:
https://leetcode.com/problems/check-completeness-of-a-binary-tree/
2 解決思路
給節點編號,使用層次遍歷方式從編號為1的根節點開始遍歷二叉樹。
針對每次遍歷,判斷上一個兄弟節點的編號與當前編號是否連續,若不連續則說明破壞了完全二叉樹的規則,返回false;
若遍歷到最后一個節點仍未發現破壞完全二叉樹規則的情況,則返回true。
3 Golang實現代碼
https://github.com/olzhy/leetcode/blob/master/958_Check_Completeness_Of_A_Binary_Tree/test.go
原文鏈接:https://leileiluoluo.com/posts/leetcode-check-completeness-of-a-binary-tree.html
本文作者:磊磊落落的博客,原創授權發布