一、二叉树的深度

题目:

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

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

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

示例:
给定二叉树 [3,9,20,null,null,15,7]

  1. 3
  2. / \
  3. 9 20
  4. / \
  5. 15 7

返回它的最大深度 3 。

思路1:递归

  边界:一旦root == None则返回深度为0。否则进入递归子问题。

  递归子问题:max(左树深度,右树深度)+ 1

  

  1. def dfs(root):
  2. #边界
  3. if not root:
  4. return 0
  5. #递归子问题
  6. else:
  7. left = dfs(root.left)
  8. right = dfs(root.right)
  9. return max(left,right)+1
  10.  
  11. class TreeNode(object):
  12. def __init__(self, x):
  13. self.val = x
  14. self.left = None
  15. self.right = None
  16. root = TreeNode(1)
  17. root.left = TreeNode(2)
  18. root.right = TreeNode(3)
  19. root.left.left = TreeNode(4)
  20. root.left.left.right = TreeNode(5)
  21. height = dfs(root)

思路2:深度遍历dfs

  边界:一旦root == None则记录深度大小tmp,判断是否大于res(结果)。否则进入递归子问题。

  递归子问题:将当前深度tmp + 1,传入左子树和右子树。

代码:

  1. #全局变量
  2. res = 0
  3.  
  4. def dfs(root,tmp):
  5. global res
  6. ##边界
  7. if not root:
  8. res = max(res,tmp)
  9. return
  10. ###递归子问题
  11. else:
  12. dfs(root.left,tmp+1)
  13. dfs(root.right,tmp+1)
  14.  
  15. class TreeNode(object):
  16. def __init__(self, x):
  17. self.val = x
  18. self.left = None
  19. self.right = None
  20. root = TreeNode(1)
  21. root.left = TreeNode(2)
  22. root.right = TreeNode(3)
  23. root.left.left = TreeNode(4)
  24. root.left.left.right = TreeNode(5)
  25.  
  26. dfs(root,0)
  27. print(res)

二、

  

  

深度遍历DFS---树的更多相关文章

  1. 深度遍历DFS

    目录: https://zhipianxuan.github.io/ 一.树的DFS 二.二维矩阵的DFS 三.图的DFS 一.题目一:二维矩阵(输出所有路径数) 思路:从起点开始,DFS,直到走到终 ...

  2. 多级树的深度遍历与广度遍历(Java实现)

    目录 多级树的深度遍历与广度遍历 节点模型 深度优先遍历 广度优先遍历 多级树的深度遍历与广度遍历 深度优先遍历与广度优先遍历其实是属于图算法的一种,多级树可以看做是一种特殊的图,所以多级数的深/广遍 ...

  3. java遍历树(深度遍历和广度遍历

    java遍历树如现有以下一颗树:A     B          B1               B11          B2               B22     C          C ...

  4. 数据结构之 图论---图的深度遍历( 输出dfs的先后遍历序列 )

    图的深度遍历 Time Limit: 1000MS Memory limit: 65536K 题目描述 请定一个无向图,顶点编号从0到n-1,用深度优先搜索(DFS),遍历并输出.遍历时,先遍历节点编 ...

  5. 数据结构实验之图论二:图的深度遍历(SDUT 2107)(简单DFS)

    题解:图的深度遍历就是顺着一个最初的结点开始,把与它相邻的结点都找到,也就是一直往下搜索直到尽头,然后在顺次找其他的结点. #include <bits/stdc++.h> using n ...

  6. 图的数据结构的实现与遍历(DFS,BFS)

    //图的存储结构:const int MAXSIZE = 10;//邻接矩阵template<class T>class MGraph {public:    MGraph(T a[], ...

  7. 数据结构-图-Java实现:有向图 图存储(邻接矩阵),最小生成树,广度深度遍历,图的连通性,最短路径1

    import java.util.ArrayList; import java.util.List; // 模块E public class AdjMatrixGraph<E> { pro ...

  8. POJ 3321 Apple Tree(后根遍历将树转化成序列,用树状数组维护)

    题意:一棵树,有很多分叉,每个分叉上最多有1个苹果. 给出n,接下来n-1行,每行u,v,表示分叉u,v之间有树枝相连.这里数据中u相当于树中的父节点,v相当于子节点. 给出两个操作: 1.C x  ...

  9. 图的深度优先遍历DFS

    图的深度优先遍历是树的前序遍历的应用,其实就是一个递归的过程,我们人为的规定一种条件,或者说一种继续遍历下去的判断条件,只要满足我们定义的这种条件,我们就遍历下去,当然,走过的节点必须记录下来,当条件 ...

随机推荐

  1. HDU 4519

    实现简单,但不得不说是一道好题. 当员工数少于医生数时,直接输出K,因为此时N个员工同时检查,必定是最少的时间了. 当员工数大于医生数时,可以把员工的项目看成一段一段的,每个医生对其进行切割,总能得到 ...

  2. HDU 4540

    简单得不能再简单的DP了. #include<iostream> const int inf=1<<30; using namespace std; int map[22][2 ...

  3. android:怎样用一天时间,写出“飞机大战”这种游戏!(无框架-SurfaceView绘制)

    序言作为一个android开发人员,时常想开发一个小游戏娱乐一下大家,今天就说说,我是怎么样一天写出一个简单的"飞机大战"的. 体验地址:http://www.wandoujia. ...

  4. IOS6.0自带下拉刷新控件UIRefreshControl

    1.UIRefreshControl必需要在IOS6.0以后才干使用,同一时候他仅仅能在UITableViewController类中才干够使用 2.使用比較简单 self.refreshContro ...

  5. SQL 优化记录

    1. 对Where 语句的法则 1.1 避免在WHERE子句中使用in,not  in,or 或者having. 可以使用 exist 和not exist代替 in和not in. 可以使用表链接代 ...

  6. CodeForces - 789D Weird journey

    D. Weird journey time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  7. This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery

    This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'的意思是,这版本的 MySQL 不支持使 ...

  8. 基于Spark ML的Titanic Challenge (Top 6%)

    下面代码按照之前参加Kaggle的python代码改写,只完成了模型的训练过程,还需要对test集的数据进行转换和对test集进行预测. scala 2.11.12 spark 2.2.2 packa ...

  9. scws

    SCWS 是 Simple Chinese Word Segmentation 的首字母缩写(即:简易中文分词系统). 这是一套基于词频词典的机械式中文分词引擎,它能将一整段的中文文本基本正确地切分成 ...

  10. Appium + python -always_allows弹窗

    from appium import webdriverfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.web ...