題目
思路:
- 先用以樹來說較直觀的遞迴解
- 要比較所有相同位置的 node 的值是否一樣,可以把所有待比較的 node pair 丟到 stack 裡一一拿出來比較,全部比完都通過的話就是一樣的 tree
- 一個 pair 比較後會把下面的所有分支點繼續丟進 stack 等待比較,所以用
while stack:只要有就繼續比,一直比到完
Python3 solution:
1 | # Definition for a binary tree node. |
假設 p 有 n 個節點,寬度 w1,q 有 m 個節點,寬度 w2
- 時間複雜度:O(max(m, n))
- 空間複雜度:O(max(w1, w2))
- 因為是 BFS,
stack需儲存當前層次上的節點,故跟寬度成正比
- 因為是 BFS,
類似題:Symmetric Tree 用 iterative 方法來解