LeetCode#100. Same Tree

来源:互联网 发布:windows gdi 图形编程 编辑:程序博客网 时间:2024/06/05 16:19
  • 题目:给定两个树,判断这棵树是不是一模一样(结构以及节点的值都需要一样)
  • 难度:Easy
  • 思路:直接采用深度优先对树进行递归,判断节点的值是否相等,加上对空指针的判断(结构上判断)。对于树的一些题目,很多时候可以用递归来做
  • 代码:
/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public boolean isSameTree(TreeNode p, TreeNode q) {        return recursion(p,q);    }    private static boolean recursion(TreeNode p, TreeNode q){        if(p == null && q != null){            return false;        }        if(p != null && q == null){            return false;        }        if(p == null && q == null){            return true;        }        if(p.val != q.val){            return false;        }else{            if(!recursion(p.left, q.left)){                return false;            }else{                return recursion(p.right, q.right);            }        }    }}
  • 更简洁的代码(思路一样,将两个指针都为空的情况先判断,则可以减少代码行数)
public boolean isSameTree(TreeNode p, TreeNode q) {    if(p == null && q == null) return true;    if(p == null || q == null) return false;    if(p.val == q.val)        return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);    return false;}
0 0