[LeetCode] #100 Same Tree 解題

題目連結

題型解說

這是一題難度為簡單的題目

需要設計一個方法,此方法會傳入兩個二元樹 p 和 q

回傳這兩棵樹是不是完全一樣

解題思路

這題看是要寫個遞迴還是使用 Stack 搭配迴圈都可以

沒有什麼困難點,就是左邊跟左邊比,右邊跟右邊比,中間跟中間比

其中一個沒比對上就回傳 false

程式碼

Java

class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        if (p == null && q == null) {
            return true;
        } else if (p == null || q == null || p.val != q.val) {
            return false;
        }
        
        return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
    }
}
class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        Stack stack = new Stack();
        
        stack.push(p);
        stack.push(q);
        
        TreeNode temp1;
        TreeNode temp2;
        
        while (!stack.empty()) {
            temp1 = (TreeNode)stack.pop();
            temp2 = (TreeNode)stack.pop();
            
            if (temp1 == null && temp2 == null) {
                continue;
            } else if (temp1 == null || temp2 == null || temp1.val != temp2.val) {
                return false;
            }

            stack.push(temp1.left);
            stack.push(temp2.left);
            stack.push(temp1.right);
            stack.push(temp2.right);
        }
        
        return true;
    }
}