经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 编程经验 » 查看文章
相同的树
来源:cnblogs  作者:GilfoyleWSW  时间:2018/9/25 19:12:37  对本文有异议

给定两个二叉树,编写一个函数来检验它们是否相同。

如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

 

示例 1:

  1. 输入: 1 1
  2. / \ / 2 3 2 3
  3. [1,2,3], [1,2,3]
  4. 输出: true

示例 2:

  1. 输入: 1 1
  2. / 2 2
  3. [1,2], [1,null,2]
  4. 输出: false

示例 3:

  1. 输入: 1 1
  2. / \ / 2 1 1 2
  3. [1,2,1], [1,1,2]
  4. 输出: false

    通过此题掌握树的运用

    题目分析:比较两棵树是不是相等;树的相等包括节点上的值对应相等,以及具有相同的结构;

    我们运用递归的思想解决此题;

    代码实现:
  1. 1 public static class TreeNode
  2. 2 {
  3. 3 int data;
  4. 4 TreeNode left;
  5. 5 TreeNode right;
  6. 6 TreeNode(int val)
  7. 7 {
  8. 8 data = val;
  9. 9 }
  10. 10 }
  11. 11
  12. 12 public boolean isSameTree(TreeNode p, TreeNode q)
  13. 13 {
  14. 14 if (p == null && q == null)
  15. 15 return true;
  16. 16 else if (p == null || q == null)
  17. 17 return false;
  18. 18 else
  19. 19 return (p.data == q.data && isSameTree(p.left, q.left) && isSameTree(p.right, q.right));
  20. 20 }

通过上述代码可以看出:先考虑树为空的情况;如果两棵树都为空,则相等;如果两棵树中只有一棵树为空,则不相等;之后比较两棵树的根结点是否相等;然后运用递归的方法对两棵树的左子树和右子树分别比较,如果左子树和右子树对应相等,则这两棵树相等;

 

主函数:

  1. 1 public static void main(String[] args)
  2. 2 {
  3. 3 TreeNode p = new TreeNode(1);
  4. 4 p.left = new TreeNode(2);
  5. 5 p.right = null;
  6. 6
  7. 7 TreeNode q = new TreeNode(1);
  8. 8 q.left = null;
  9. 9 q.right = new TreeNode(3);
  10. 10
  11. 11 Tree2 t = new Tree2();
  12. 12 System.out.println(t.isSameTree(p, q));
  13. 13 }

我构造的两棵树如下所示:

  1. 1 1
  2. / 2 2

 

运行结果:

  1. 1 false

 



 
 
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号