当前位置:   article > 正文

运用递归解决二叉树问题_递归思想解决二叉树问题的优缺点

递归思想解决二叉树问题的优缺点

二叉树的各种遍历方法可以参考我的博客  二叉树的各种遍历方法

二叉树的最大深度

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

  1. # Definition for a binary tree node.
  2. # class TreeNode:
  3. # def __init__(self, x):
  4. # self.val = x
  5. # self.left = None
  6. # self.right = None
  7. class Solution:
  8. def maxDepth(self, root: TreeNode) -> int:
  9. res = 0
  10. def dfs(root,d):
  11. if not root:return
  12. nonlocal res
  13. res = max(res,d)
  14. dfs(root.left,d+1)
  15. dfs(root.right,d+1)
  16. dfs(root,1)
  17. return res

对称的二叉树

给定一个二叉树,检查它是否是镜像对称的。

  1. # Definition for a binary tree node.
  2. # class TreeNode:
  3. # def __init__(self, x):
  4. # self.val = x
  5. # self.left = None
  6. # self.right = None
  7. class Solution:
  8. def isSymmetric(self, root: TreeNode) -> bool:
  9. def sym(node1,node2):
  10. if not node1 and not node2:
  11. return True
  12. if not node1 or not node2:
  13. return False
  14. return node1.val==node2.val and sym(node1.left,node2.right) and sym(node1.right,node2.left)
  15. if not root:
  16. return True
  17. return sym(root.left,root.right)

路径总和

给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。

说明: 叶子节点是指没有子节点的节点。

  1. # Definition for a binary tree node.
  2. # class TreeNode:
  3. # def __init__(self, x):
  4. # self.val = x
  5. # self.left = None
  6. # self.right = None
  7. class Solution:
  8. def hasPathSum(self, root: TreeNode, sumn: int) -> bool:
  9. def dfs(root,tar):
  10. if not root:return False
  11. tar = tar - root.val
  12. if tar==0 and not root.left and not root.right:
  13. return True
  14. return dfs(root.left,tar) or dfs(root.right,tar)
  15. return dfs(root,sumn)

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/731870
推荐阅读
相关标签
  

闽ICP备14008679号