博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深度遍历DFS---树
阅读量:5869 次
发布时间:2019-06-19

本文共 1276 字,大约阅读时间需要 4 分钟。

一、二叉树的深度

题目:

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

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

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

示例:

给定二叉树 [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)+1class TreeNode(object):    def __init__(self, x):        self.val = x        self.left = None        self.right = Noneroot = 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 = 0def 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 = Noneroot = 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)

 

二、

 

  

 

  

 

转载于:https://www.cnblogs.com/Lee-yl/p/10707099.html

你可能感兴趣的文章
欧洲新闻媒体与谷歌的冲突
查看>>
Android平台下使用Ksoap2调用传递复杂对象
查看>>
kindeditor 上传文件控件优化下。。
查看>>
一篇读懂深度学习中「训练」和「推断」的区别
查看>>
推论统计2-T测试
查看>>
只有程序员能看懂的西游记
查看>>
删除任何文件
查看>>
手机传感器
查看>>
webSocket前台实现
查看>>
tomcat8常用配置说明
查看>>
SaltStack 2014.1.4 Windows minion 端安装后无法启动的问题解决
查看>>
找回消失的网站网页
查看>>
快速掌握Eclipse Plugin / RCP开发思想
查看>>
Java 多线程写文件
查看>>
我用了两个月的时间才理解 let
查看>>
[JS] this, 你到底指向谁?
查看>>
jdbc连接DB2数据库超时的问题
查看>>
小菜学设计模式——模板方法模式
查看>>
流的补充及内存流字符编码
查看>>
PSR 类自动加载规范的翻译与看法
查看>>