尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

代码随想录算法训练营第十三天 | 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和 222.完全二叉树的节点个数

代码随想录算法训练营第十三天 | 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和 222.完全二叉树的节点个数 学习内容110. 平衡二叉树classSolution:defisBalanced(self,root:Optional[TreeNode])-bool:ifself.gethight(root)!-1:returnTrueelse:returnFalsedefgethight(self,node):ifnotnode:return0lefthightself.gethight(node.left)iflefthight-1:return-1righthightself.gethight(node.right)ifrighthight-1:return-1ifabs(lefthight-righthight)1:return-1else:return1max(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:return0leftValueself.sumOfLeftLeaves(root.left)ifroot.leftandnotroot.left.leftandnotroot.left.right:leftValueroot.left.val rightValueself.sumOfLeftLeaves(root.right)sum_valleftValuerightValuereturnsum_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:return0leftnumself.getnodesnum(cur.left)rightnumself.getnodesnum(cur.right)sumsleftnumrightnum1returnsums学习心得得注意后面会自己写输入输出
返回列表