1. 程式人生 > >Leetcode-958 Check Completeness of a Binary Tree(二叉樹的完全性檢驗)

Leetcode-958 Check Completeness of a Binary Tree(二叉樹的完全性檢驗)

模板題,不懂為什麼會比第一題分高

 1 class Solution
 2 {
 3     public:
 4         bool isCompleteTree(TreeNode* root)
 5         {
 6             if (root == NULL)
 7                 return false;
 8 
 9             queue<TreeNode *> q;
10             q.push(root);
11             bool mustHaveNoChild = false
; 12 bool result = true; 13 while (!q.empty()) 14 { 15 TreeNode* pNode = q.front(); 16 q.pop(); 17 if (mustHaveNoChild)//如果一個節點沒有子節點;只要出現了空子樹的節點,後面出現的必須為葉子節點(左字樹右子樹必須為空) 18 { 19 if
(pNode->left != NULL || pNode->right != NULL) 20 { 21 result = false; 22 break; 23 } 24 } 25 else 26 { 27 if (pNode->left != NULL && pNode->right != NULL)
28 { 29 q.push(pNode->left); 30 q.push(pNode->right); 31 } 32 else if (pNode->left != NULL && pNode->right == NULL) 33 { 34 mustHaveNoChild = true; 35 q.push(pNode->left); 36 } 37 else if(pNode->left == NULL && pNode->right != NULL) 38 { 39 result = false; 40 break; 41 } 42 else 43 { 44 mustHaveNoChild = true; 45 } 46 } 47 } 48 return result; 49 50 } 51 };