☰
代码随想录算法训练营第十三天 | 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和 222.完全二叉树的节点个数
2026/10/19 8:31:57 网站建设 项目流程

学习内容:

110. 平衡二叉树

classSolution:defisBalanced(self,root:Optional[TreeNode])->bool:ifself.gethight(root)!=-1:returnTrueelse:returnFalsedefgethight(self,node):ifnotnode:return0lefthight=self.gethight(node.left)iflefthight==-1:return-1righthight=self.gethight(node.right)ifrighthight==-1:return-1ifabs(lefthight-righthight)>1:return-1else:return1+max(lefthight,righthight)

学习心得:主要判断不平衡的条件,后序遍历,左右中。

257. 二叉树的所有路径

classSolution:deftraversal(self,cur,path,result):path.append(cur.val)ifnotcur.leftandnotcur.right:spath="->".join(map(str,path))result.append(spath)returnifcur.left:self.traversal(cur.left,path,result)path.pop()ifcur.right:self.traversal(cur.right,path,result)path.pop()defbinaryTreePaths(self,root:Optional[TreeNode])->List[str]:result=[]path=[]ifnotroot:returnresult self.traversal(root,path,result)returnresult

学习心得:注意“->”的定义写法。使用前序遍历,中左右,并且需要path回溯.pop()。

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

classSolution:defsumOfLeftLeaves(self,root:Optional[TreeNode])->int:ifnotroot:return0ifroot.leftisNoneandroot.rightisNone:return0leftValue=self.sumOfLeftLeaves(root.left)ifroot.leftandnotroot.left.leftandnotroot.left.right:leftValue=root.left.val rightValue=self.sumOfLeftLeaves(root.right)sum_val=leftValue+rightValuereturnsum_val

学习心得:注意首先数是否为空 根节点的左右节点是否为空,是的话返回0。 后续遍历,左右中,left 判断当前节点的左节点存在,左节点的左右节点都不存在说明为左叶子,记录他的值,继续right 最后sum为左右之和。

222. 完全二叉树的节点个数

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。

完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层(从第 0 层开始),则该层包含 1~ 2h 个节点。

classSolution:defcountNodes(self,root:Optional[TreeNode])->int:returnself.getnodesnum(root)defgetnodesnum(self,cur):ifcurisNone:return0leftnum=self.getnodesnum(cur.left)rightnum=self.getnodesnum(cur.right)sums=leftnum+rightnum+1returnsums

学习心得:得注意后面会自己写输入输出

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询