![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
二叉树的递归套路
1)假设以X节点为头,假设可以向X左树和X右树要任何信息
2)在上一步的假设下,讨论以X为头节点的树,得到答案的可能性(最重要)
3)列出所有可能性后,确定到底需要向左树和右树要什么样的信息
4)把左树信息和右树信息求全集,就是任何一棵子树都需要返回的信息S
5)递归函数都返回S,每一棵子树都这么要
摸水的渔
这个作者很懒,什么都没留下…
展开
-
09、二叉树的递归套路-派对的最大快乐值
员工信息的定义如下:Class Employee{ public int happy; //快乐值 public List<Employee> subordinates; //该员工的直接下属}公司的每个员工都符合上述类的描述。整个公司的人员结构都可看成是一棵标准的、没有环的多叉树。树的头结点是整个公司唯一的老板,除老板之外的员工都有唯一的直接上级。叶子结点是没有任何下属的基层员工(subordinates列表为空),除基层员工外,每个员工都有一个或多个直接下级。这.原创 2021-12-30 23:30:43 · 350 阅读 · 0 评论 -
08、二叉树的递归套路-最大距离
题目:给定一个二叉树的头节点head,任何两个节点之间都存在距离,返回整棵二叉树的最大距离。1、解决方案11.1、思路:1、先序遍历该树,依次存放到集合中2、填充hashMap,key为当前节点,value为当前节点的父节点3、暴力尝试两两节点之间的距离,取最大值1.2、代码:public static class Node { public int value; public Node left; public Node right;..原创 2021-12-29 17:31:55 · 325 阅读 · 0 评论 -
07、二叉树的递归套路-最低公共祖先
题目:给定一颗树和两个a、b节点,返回a和b的最低公共祖先1、解决方案1:1.1、思路:1.2、代码:public static class Node { public int value; public Node left; public Node right; public Node(int data) { this.value = data; }}//方案1:利用Set集合相同元素存放不进去的特性找...原创 2021-12-28 22:59:19 · 470 阅读 · 0 评论 -
06、二叉树的递归套路-完全二叉树
题目:给定一棵二叉树的头节点head,判断这棵树是不是完全二叉树1、解决方案11.1、思路:1.2、代码:public static class Node { public int value; public Node left; public Node right; public Node(int data) { this.value = data; }}//方案1:利用宽度优先遍历判断该树是否为完全二叉...原创 2021-12-27 22:56:45 · 507 阅读 · 0 评论 -
05、二叉树的递归套路-二叉搜索子树头节点
题目:给定一棵二叉树的头节点head,返回这颗树中最大的搜索二叉子树头节点1、解决方案11.1、思路:从head节点开始判断,如果以该节点为头的树是二叉搜索树,那么直接返回大小。否则就继续判断该节点的左右子树(左右子树中取最大值)1.2、代码:public static class Node { public int value; public Node left; public Node right; public Node(int d..原创 2021-12-27 14:43:47 · 154 阅读 · 0 评论 -
04、二叉树的递归套路-二叉搜索子树大小
题目:给定一棵二叉树的头节点head,返回这颗树中最大的搜索二叉子树的大小1、解决方案11.1、思路:从head节点开始判断,如果以该节点为头的树是二叉搜索树,那么直接返回大小。否则就继续判断该节点的左右子树(左右子树中取最大值)1.2、代码:public static class Node { public int value; public Node left; public Node right; public Node(int ...原创 2021-12-23 18:32:52 · 367 阅读 · 0 评论 -
03、二叉树的递归套路-二叉搜索树
题目:给定一棵二叉树的头节点head,返回这颗二叉树是不是搜索二叉树搜索二叉树定义:1、解决方案1:1.1、思路:1、中序遍历该树,把遍历到的节点保存到集合中2、遍历集合,如果该树是二叉搜索树,那么一定满足索引i位置元素一定是大于索引(i-1)位置的元素值1.2、代码:public static class Node { public int value; public Node left; public Node right; ..原创 2021-12-23 13:34:00 · 445 阅读 · 0 评论 -
02、二叉树的递归套路-满二叉树
题目:给定一棵二叉树的头节点head,返回这颗二叉树是不是满二叉树满二叉树定义:1、解决方案11.1、思路:1、获取该树的高度(height)2、获取该树的节点树(nodes)3、如果height的N次方减去1正好等于nodes,那么该树就是满二叉树1.2、代码:public static class Node { public int value; public Node left; public Node right; ...原创 2021-12-21 16:10:06 · 355 阅读 · 0 评论 -
01、二叉树的递归套路-平衡二叉树
题目:给定一棵二叉树的头节点head,返回这颗二叉树是不是平衡二叉树原创 2021-12-16 00:02:45 · 201 阅读 · 0 评论