LeetCode226翻轉二叉樹
阿新 • • 發佈:2018-12-31
class Solution {
public:
TreeNode* invertTree(TreeNode *pRoot) {
if(pRoot==nullptr) return nullptr;
queue<TreeNode*> qu;
qu.push(pRoot);
while(!qu.empty()){
TreeNode* front=qu.front();
TreeNode* temp=front->left;
front-> left=front->right;
front->right=temp;
qu.push(front->left);
qu.push(front->right);
qu.pop();
}
return pRoot;
}
};
用front的left和right漏掉對front的判空
class Solution {
public:
TreeNode* invertTree(TreeNode *pRoot) {
if (pRoot==nullptr) return nullptr;
queue<TreeNode*> qu;
qu.push(pRoot);
while(!qu.empty()){
TreeNode* front=qu.front();
if(front){
TreeNode* temp=front->left;
front->left=front->right;
front-> right=temp;
qu.push(front->left);
qu.push(front->right);
}
qu.pop(); 無論空節點入不入隊都要刪掉
}
return pRoot;
}
};
或者
class Solution {
public:
TreeNode* invertTree(TreeNode *pRoot) {
if(pRoot==nullptr) return nullptr;
queue<TreeNode*> qu;
qu.push(pRoot);
while(!qu.empty()){
TreeNode* front=qu.front();
TreeNode* temp=front->left;
front->left=front->right;
front->right=temp;
if(front->left) qu.push(front->left);
if(front->right) qu.push(front->right); //空節點不入隊
qu.pop();
}
return pRoot;
}
};