題目:
Given two binary trees, write a function to check if they are equal or not.
Two binary trees are considered equal if they are structurally identical and the nodes have the same value.
題解:
遞迴判斷左右是否相等。
程式碼如下:
1 public boolean isSameTree(TreeNode p, TreeNode q) {
2 if(p==null&&q==null)
3 return true;
4
5 if(p==null&&q!=null)
6 return false;
7
8 if(p!=null&&q==null)
9 return false;
10
11 if(p.val!=q.val)
12 return false;
13 boolean isleftsame = isSameTree(p.left,q.left);
14 if(!isleftsame)
15 return false;
16
17 boolean isrightsame = isSameTree(p.right,q.right);
18 if(!isrightsame)
19 return false;
20
21 return true;
22
23 }
2 if(p==null&&q==null)
3 return true;
4
5 if(p==null&&q!=null)
6 return false;
7
8 if(p!=null&&q==null)
9 return false;
10
11 if(p.val!=q.val)
12 return false;
13 boolean isleftsame = isSameTree(p.left,q.left);
14 if(!isleftsame)
15 return false;
16
17 boolean isrightsame = isSameTree(p.right,q.right);
18 if(!isrightsame)
19 return false;
20
21 return true;
22
23 }
對上述程式碼更簡潔的寫法是:
1 public boolean isSameTree(TreeNode p, TreeNode q) {
2 if(p == null&&q == null)
3 return true;
4 if(p == null||q == null)
5 return false;
6 return (p.val == q.val) && isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
7 }
2 if(p == null&&q == null)
3 return true;
4 if(p == null||q == null)
5 return false;
6 return (p.val == q.val) && isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
7 }