[leetcode] 22.Same Tree

同是遞歸簡單題html

public class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        boolean flag = true;
        if(p == null && q == null)
            return true;
        else if(p != null && q != null && p.val == q.val)
            return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
        else
            return false;
    }
}

若不用遞歸: 來自: http://www.cnblogs.com/lautsie/p/3247097.htmljava

public class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        LinkedList<TreeNode> left = new LinkedList<TreeNode>();
        LinkedList<TreeNode> right = new LinkedList<TreeNode>();

        left.offer(p);
        right.offer(q);

        while (left.size() != 0 && right.size() != 0) {
            TreeNode ln = left.poll();
            TreeNode rn = right.poll();
            if (ln == null && rn == null) continue;
            if (ln == null || rn == null) return false;
            if (ln.val != rn.val) return false;
            
            left.offer(ln.left); left.offer(ln.right);
            right.offer(rn.left); right.offer(rn.right);
        }
        if (left.size() != 0 || right.size() != 0) return false;
        return true;
    }
}

  

基礎:spa

此處的LinkedList繼承自Queuehtm

LinkedList是List接口的實現類,也是Deque接口的實現類,Deque接口是Queue的子接口。兼具雙向隊列,棧和List集合的用法對象

1)LinkedList做爲List使用時,通常採用add / get方法來 壓入/獲取對象
2)LinkedList做爲Queue使用時,纔會採用 offer/poll 等方法,沒有empty(),這些方法是用於支持隊列應用的。 與通常隊隊同樣,offer插入元素到隊尾,poll訪問並刪除隊首元素。另有pollLast能夠訪問並刪除隊尾元素。
3)LinkedList做爲棧使用時,會用到 push/pop方法, 注意,棧的操做是在隊首方向進行的。即push會插到隊首,pop會訪問並刪除隊首元素。blog

訪問不刪除對象還可用getFirst()/getLast()  peekFirst()/peekLast() 繼承

相關文章
相關標籤/搜索