首页 > 编程语言 >代码随想录算法训练营第十七天 | 110.平衡二叉树 (优先掌握递归)| 404.左叶子之和 (优先掌握递归)| 257. 二叉树的所有路径 (优先掌握递归)

代码随想录算法训练营第十七天 | 110.平衡二叉树 (优先掌握递归)| 404.左叶子之和 (优先掌握递归)| 257. 二叉树的所有路径 (优先掌握递归)

时间:2024-02-17 11:55:18浏览次数:33  
标签:node 优先 return nil 递归 dfs 二叉树 root

257. 二叉树的所有路径

  已解答 简单  

相关标签

相关企业  

给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。

叶子节点 是指没有子节点的节点。

示例 1:

输入:root = [1,2,3,null,5]
输出:["1->2->5","1->3"]

示例 2:

输入:root = [1]
输出:["1"]

 

提示:

  • 树中节点的数目在范围 [1, 100] 内
  • -100 <= Node.val <= 100

func binaryTreePaths(root *TreeNode) []string { if root == nil { return []string{} } varres []string vartrace []string vardfsfunc(node *TreeNode) dfs = func(node *TreeNode) { trace = append(trace, fmt.Sprintf("%d", node.Val)) if node.Left == nil && node.Right == nil { res = append(res, strings.Join(trace, "->")) return } if node.Left != nil { dfs(node.Left) trace = trace[:len(trace)-1] } if node.Right != nil { dfs(node.Right) trace = trace[:len(trace)-1] } } dfs(root) return res }

404. 左叶子之和

  已解答 简单  

相关标签

相关企业  

给定二叉树的根节点 root ,返回所有左叶子之和。

 

示例 1:

输入: root = [3,9,20,null,null,15,7] 
输出: 24 
解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24

示例 2:

输入: root = [1]
输出: 0

 

提示:

  • 节点数在 [1, 1000] 范围内
  • -1000 <= Node.val <= 1000

 


func sumOfLeftLeaves(root *TreeNode) int { vardfsfunc(root *TreeNode, direct int) int dfs = func(root *TreeNode, direct int) int { if root == nil { return0 } if root.Left == nil && root.Right == nil && direct == -1 { return root.Val } leftSum := dfs(root.Left, -1) rightSum := dfs(root.Right, 1) return leftSum + rightSum } returndfs(root, 0) }

110. 平衡二叉树

  已解答 简单  

相关标签

相关企业  

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。

 

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:true

示例 2:

输入:root = [1,2,2,3,3,null,null,4,4]
输出:false

示例 3:

输入:root = []
输出:true

 

提示:

  • 树中的节点数在范围 [0, 5000] 内
  • -104 <= Node.val <= 104

 


func isBalanced(root *TreeNode) bool { vardfsfunc(node *TreeNode) int dfs = func(node *TreeNode) int { if node == nil { return0 } leftHeight := dfs(node.Left) rightHeight := dfs(node.Right) if leftHeight == -1 { return -1 } if rightHeight == -1 { return -1 } if leftHeight-rightHeight > 1 || leftHeight-rightHeight < -1 { return -1 } maxHeight := leftHeight if rightHeight > leftHeight { maxHeight = rightHeight } return maxHeight + 1 } returndfs(root) != -1 }

标签:node,优先,return,nil,递归,dfs,二叉树,root
From: https://www.cnblogs.com/suxinmian/p/18017860

相关文章

  • 代码随想录算法训练营第十六天 | 104.二叉树的最大深度| 559.n叉树的最大深度|222.完
    222.完全二叉树的节点个数 已解答简单 相关标签相关企业 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中......
  • 关于记忆递归
    我们都知道递归是不断运行函数以得出结果的运算方式它的优点在于简单的几行公式就完全阐释了变换规律当然缺点也很明显:如果要重复进行大数据的运算会让计算时间极大幅度变长因此对递归的优化就尤为重要首先题目在这里原超时代码如下点击查看代码#include<bits/std......
  • 代码随想录算法训练营第十五天 | 层次遍历 | 101. 对称二叉树 | 226.翻转二叉树
    226.翻转二叉树 已解答简单 相关标签相关企业 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例1:输入:root=[4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]示例2:输入:root=[2,1,3]输出:[2,3,1]示例3:输入:root=[]输出:[......
  • 力扣递归 广度优先搜索之102. 二叉树的层序遍历
    classSolution{   List<List<Integer>>result=newArrayList<>();   publicList<List<Integer>>levelOrder(TreeNoderoot){       if(root==null){           returnresult;       }       traverse(root,0);    ......
  • 力扣递归之 543. 二叉树的直径
    classSolution{//二叉树直径其实就是根到左子树最深+根到右子树最深  intdiameter;    publicintdiameterOfBinaryTree(TreeNoderoot){    calculateDepth(root);    returndiameter;  }    privateintcalculateDe......
  • 力扣递归之101. 对称二叉树
    classSolution{  publicbooleanisSymmetric(TreeNoderoot){    if(root==null){      returntrue;    }    returnisMirror(root.left,root.right);  }    publicbooleanisMirror(TreeNodeleft,Tr......
  • 树状数组-三色二叉树 题解
    题目在这里————————————————————————————————三色二叉树首先题面写的很清楚了是一道树状数组题因为这题的输入方式很特别按二叉树序列所以在输入上要特殊处理如下voidread(intx){//读入+存图以左右子树为形式如l[x]=y即y为x左子树......
  • (18/60)找树左下角的值、路径总和、从中序与后序遍历构造二叉树
    找树左下角的值leetcode:513.找树左下角的值层序迭代法思路层序遍历,每次更新result为每层最左侧元素。复杂度分析时间复杂度:遍历,O(N)。空间复杂度:队列层序遍历,树*似完全二叉树时O(N),树极倾斜时O(logN)。注意点略代码实现/***Definitionforabinarytreenode.......
  • 递归查询
    @OverridepublicList<CategoryEntity>listWithTree(){//1、查询出所有分类List<CategoryEntity>entities=super.baseMapper.selectList(null);//2、组装成父子的树形结构//2.1)、找到所有一级分类List<CategoryEntity>levelMenus=entities.stream(......
  • 二叉树
    二叉树「二叉树binarytree」是一种非线性数据结构,代表着祖先与后代之间的派生关系,体现着“一分为二”的分治逻辑。与链表类似,二叉树的基本单元是节点,每个节点包含:值、左子节点引用、右子节点引用。/*二叉树节点结构体*/typedefstructTreeNode{intval;//节点值int......