1. 程式人生 > >LeetCode226翻轉二叉樹

LeetCode226翻轉二叉樹

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;
    }
};