共计 1151 个字符,预计需要花费 3 分钟才能阅读完成。
港城宝藏女孩
2023-07-12 09:33:47
浏览数 (1285)
在 Java 的面试中,判断两个二叉树是否相同是一个常见的算法问题。本文将介绍一道经典的 Java 面试题——判断两个二叉树是否相同,并提供详细的解析和解题思路。
题目
给定两个二叉树,判断它们是否相同(即结构相同且节点的值相同)。
解析与解题思路
判断两个二叉树是否相同可以使用递归的方式来实现。
- 如果两个二叉树都为空,则它们相同,返回 true。
- 如果两个二叉树中有一个为空而另一个不为空,则它们不相同,返回 false。
- 如果两个二叉树的根节点的值不相同,则它们不相同,返回 false。
- 否则,递归地判断两个二叉树的左子树和右子树是否相同。
以下是 Java 代码实例:
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {this.val = val;}
}
public class SameTree {public static 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); // 递归判断左子树和右子树是否相同
}
}
public static void main(String[] args) {
/*
* 构造两个二叉树:* 二叉树 1:* 1
* /
* 2 3
*
* 二叉树 2:* 1
* /
* 2 3
*/
TreeNode p = new TreeNode(1);
p.left = new TreeNode(2);
p.right = new TreeNode(3);
TreeNode q = new TreeNode(1);
q.left = new TreeNode(2);
q.right = new TreeNode(3);
boolean result = isSameTree(p, q);
System.out.println("两个二叉树是否相同:" + result);
}
}
输出结果:
两个二叉树是否相同:true
结论
通过递归的方式,我们可以判断两个二叉树是否相同。判断二叉树相同的条件是:两个二叉树的根节点值相同,并且它们的左子树和右子树也相同。掌握了解题思路和实现代码,我们能够在面试中更加自信地回答相关问题。
学 java,就到 java 编程狮 !
原文地址: 经典 Java 面试题解析:判断两个二叉树是否相同
正文完