深度遍历DFS---树
2024-08-31 04:00:24
一、二叉树的深度
题目:
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。
思路1:递归
边界:一旦root == None则返回深度为0。否则进入递归子问题。
递归子问题:max(左树深度,右树深度)+ 1
def dfs(root):
#边界
if not root:
return 0
#递归子问题
else:
left = dfs(root.left)
right = dfs(root.right)
return max(left,right)+1 class TreeNode(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.left.right = TreeNode(5)
height = dfs(root)
思路2:深度遍历dfs
边界:一旦root == None则记录深度大小tmp,判断是否大于res(结果)。否则进入递归子问题。
递归子问题:将当前深度tmp + 1,传入左子树和右子树。
代码:
#全局变量
res = 0 def dfs(root,tmp):
global res
##边界
if not root:
res = max(res,tmp)
return
###递归子问题
else:
dfs(root.left,tmp+1)
dfs(root.right,tmp+1) class TreeNode(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.left.right = TreeNode(5) dfs(root,0)
print(res)
二、
最新文章
- Thinkphp单字母快捷键
- [keepalved]主从上同时出现VIP,无法消失情况
- Eclipse 项目红色叹号:Build Path Problem
- [转]https方式使用git保存密码的方式
- ImportError: No module named pysqlite2 --安装pysqlite
- android 16 带返回值的activity
- 使用 EasyUI 创建左侧导航菜单
- Java中的String[] args
- Eclipse中配置weka,以及添加算法
- 充电-ios(未完更新中...
- google ip地址
- Servlet--传参和接参
- iOS开发之emoji处理
- 008_Node中的require和import
- Python继承、方法重写
- [UWP 自定义控件]了解模板化控件(8):ItemsControl
- 根据条件返回相应值 decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
- 一道面试题 包含了new的细节 和运算符的优先级 还有属性访问机制
- django-权限验证场景
- day 27 Python中进程的操作
热门文章
- Spring MVC-集成(Integration)-生成XML示例(转载实践)
- oracle 内部机制-DTRACE
- php 数组 array()
- 读写锁(read-write lock)机制-----多线程同步问题的解决
- C++对象模型——关键词所带来的差异(第一章)
- oracle强化练习之单行函数
- NoSQL数据库:Redis内存使用优化与存储
- Codeforces Round #332 (Div. 2)C. Day at the Beach 树状数组
- spring:按照Bean的名称自动装配User
- tp的redis驱动