JAVA解法
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
// 节点都为空则说明是一样的
if (p == null && q == null) {
return true;
// 任一节点一个为空另一个非空,则说明是不同的树了
} else if (p == null || q == null) {
return false;
// 两节点都有值,但是值不同也是不同的树
} else if (p.val != q.val) {
return false;
// 若两节点有值且相同,则继续往下遍历,对应的左子节点与右子节点均要相同,递归直到结束,若都相同则为相同的树,否则不是相同的树
} else {
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
}
}
}
题解分析
这道题可以采用递归判断的方法。首先对对传进来的的两个节点进行判空,若两个均为空则说明是一样的,但是任一节点一个为空另一个非空的和两节点都有值,但是值不同的均为不同的树了。若两节点有值且相同,则继续往下遍历,对应的左子节点与右子节点均要相同,递归直到结束,若都相同则为相同的树,否则不是相同的树。
leetcode原题:100. 相同的树
评论区