标签:TreeNode 递归 val next 学习 算法 l1 null root
【2022/7/21】814. 二叉树剪枝
问题
知识点回顾
1. 什么是二叉树?
- 本身是有序树
- 树中包含的各个节点的度不能超过 2,即只能是 0、1 或者 2
2. 二叉树的性质
- 第 i 层最多有 2i-1 个结点
- 若二叉树的深度为 K,那么此二叉树最多有 2K-1 个结点
解题思路
用递归实现:
- 临界值:当传入的节点为null时,返回null
- 剪枝:当传入节点的val为0,左节点为null,右节点为null时,进行剪枝处理(返回null
代码:
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 TreeNode pruneTree(TreeNode root) {
if(root==null){
return null;
}
root.left=pruneTree(root.left);
root.right= pruneTree(root.right);
if(root.val==0 && root.left==null && root.right==null){
return null;
}
return root;
}
}
提交记录
【2022/7/23] 2. 两数相加
问题
解题思路
用递归实现:
- 设置一个变量i存储进位(取值为1或0),直接将相加后的值存储到l1中
- 临界值:下一位都是空以及进位为零时退出
代码
class Solution {
static int i=0;
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
// 临界值
if(l1==null && l2==null && Solution.i==0){
return l1;
}
// 相加,相加后的值存储到l1中,并且改变进位值
if(l1.val+l2.val+Solution.i>9){
l1.val=l1.val+l2.val-10+Solution.i;
Solution.i=1;
}else{
l1.val=l1.val+l2.val+Solution.i;
Solution.i=0;
}
// 除了->(两个节点的next都为null,并且进位为零)这种情况外,将节点的next后面补0(避免节点的next为null但是还有进位的情况
if(!(l1.next==null && l2.next==null && Solution.i==0)){
if(l1.next==null){
l1.next=new ListNode(0,null);
}
if(l2.next==null){
l2.next=new ListNode(0,null);
}
}
addTwoNumbers(l1.next,l2.next);
return l1;
}
}
提交结果
标签:TreeNode,递归,val,next,学习,算法,l1,null,root 来源: https://www.cnblogs.com/ninin/p/16512016.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。