Leetcode-Same Tree
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.
Solution:
1 /** 2 * Definition for binary tree 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */ 10 public class Solution { 11 public boolean isSameTree(TreeNode p, TreeNode q) { 12 boolean res = isSameTreeRecur(p,q); 13 14 return res; 15 } 16 17 public boolean isSameTreeRecur(TreeNode left, TreeNode right){ 18 if ((left==null&&right!=null)||(left!=null&&right==null)) 19 return false; 20 21 if (left==null&&right==null) 22 return true; 23 24 if (left.val!=right.val) 25 return false; 26 27 if (left.left==null&&left.right==null&&right.left==null&&right.right==null) 28 return true; 29 30 boolean leftSame = isSameTreeRecur(left.left,right.left); 31 if (!leftSame) 32 return false; 33 34 boolean rightSame = isSameTreeRecur(left.right,right.right); 35 if (!rightSame) 36 return false; 37 38 return true; 39 } 40 }
Similar to the symmetric tree problem. Need to consider every possible situation carefully.