网站空间和云主机,原单手表网站,做网站怎样找,网站统计代码放哪里*110.平衡二叉树
题目链接/文章讲解/视频讲解#xff1a;https://programmercarl.com/0110.%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.html
考点 后序遍历二叉树高度计算 我的思路 错误地将平衡二叉树的定义等价为判断整体二叉树的最大深度和最小深度之差是否大于1 视…*110.平衡二叉树
题目链接/文章讲解/视频讲解https://programmercarl.com/0110.%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.html
考点 后序遍历二叉树高度计算 我的思路 错误地将平衡二叉树的定义等价为判断整体二叉树的最大深度和最小深度之差是否大于1 视频讲解关键点总结 实际上本题应从最低层左右子树开始判断若左右子树的高度差大于1则不是平衡二叉树因此使用后序遍历计算二叉树的高度递归三要素 形参为节点返回值为0代表遍历到了空节点/ -1代表左右子树不平衡 / 当前节点的高度退出条件若当前节点为空则return 0递归逻辑 后序遍历左右中首先计算左子树的高度再计算右子树的高度最后判断是否平衡 我的思路的问题 见上 代码书写问题 无 可执行代码
class Solution:def pro(self, root):if root is None:return 0left_height self.pro(root.left)if left_height -1:return -1right_height self.pro(root.right)if right_height -1:return -1if abs(left_height - right_height) 1:return -1else:return 1 max(left_height, right_height)def isBalanced(self, root: Optional[TreeNode]) - bool:if root is None:return Trueif self.pro(root) -1:return Falseelse:return True*257. 二叉树的所有路径
题目链接/文章讲解/视频讲解https://programmercarl.com/0257.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%89%80%E6%9C%89%E8%B7%AF%E5%BE%84.html
考点 递归回溯 我的思路 无 视频讲解关键点总结 递归三要素 形参包括当前节点路径字符串结果列表返回值为空退出条件当前节点为叶子节点时将当前路径字符串加入结果列表中并返回递归逻辑 前序遍历中左右在退出条件之上把当前节点的值加入路径字符串中为了避免退出递归时遗漏叶子节点如果左节点不为空递归左子节点递归完左子节点后执行回溯语句一定是一个递归对应一个回溯把路径字符串中的最后一个节点删除如果右节点不为空递归右子节点递归完右子节点后执行回溯语句一定是一个递归对应一个回溯把路径字符串中的最后一个节点删除 我的思路的问题 无思路 代码书写问题 无 可执行代码
class Solution:def traversal(self, root, path, result):path.append(str(root.val))if root.left is None and root.right is None:result.append(-.join(path))returnif root.left:self.traversal(root.left, path, result)path.pop()if root.right:self.traversal(root.right, path, result)path.pop()def binaryTreePaths(self, root: Optional[TreeNode]) - List[str]:if root is None:return []path []result []self.traversal(root, path, result)return result404.左叶子之和
题目链接/文章讲解/视频讲解https://programmercarl.com/0404.%E5%B7%A6%E5%8F%B6%E5%AD%90%E4%B9%8B%E5%92%8C.html
考点 前序遍历审题左叶子节点的定义 我的思路 递归三要素 形参当前节点标志位用来标记当前是否为左节点无返回值退出条件当前节点为空则退出递归逻辑 如果标志位为1代表左节点且当前节点无子节点即当前节点为叶子节点则把当前节点的值加到和值中和值初始化为Solution类的属性左子结点递归标志位为1右子节点递归标志位为0 视频讲解关键点总结 没具体看使用的思路和我大致相仿但代码逻辑有所区别 我的思路的问题 无 代码书写问题 无 可执行代码
class Solution:def __init__(self):self.summation 0def sum_left(self, root, flag):if root is None:return 0if flag 1 and root.left is None and root.right is None:self.summation root.valself.sum_left(root.left, 1)self.sum_left(root.right, 0)def sumOfLeftLeaves(self, root: Optional[TreeNode]) - int:self.sum_left(root, 0)return self.summation