求二叉树的深度-创新互联

对于二叉树的大的深度,可以采用递归算法。
算法描述如下:
如果根结点为null,那么深度=0
如果根结点不是null,那么就看该当前结点的左孩子的深度和右孩子的深度
如果左孩子深度>=右孩子的深度,那么当前根结点的深度就是左孩子的深度+1.
反之则为右孩子的深度+1

在太仓等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站建设、成都网站设计 网站设计制作按需设计网站,公司网站建设,企业网站建设,品牌网站制作,营销型网站,外贸网站建设,太仓网站建设费用合理。

对每个左孩子右孩子也是采用同样的算法。到某一节点是null的时候,才能返回0;

之前的文章有关于二叉树遍历的算法的描述。此处,对于遍历可以做一些小的改进,使它可以在遍历的时候计算出当前节点的深度。只要在递归方法中加入一个深度参数,每次调用的递归方法的时候,该参数都会自增1.则可以计算出深度。

假设构造出2棵树

求二叉树的深度

字母树

求二叉树的深度

数字树

采用算法计算深度,和遍历。

结果如下:

求二叉树的深度

具体代码如下:

  1. using
  2. using
  3. using
  4. using
  5. namespace
  6.  
  7.     #region 节点的定义 
  8. class
  9. publicstring
  10. public
  11. public
  12. publicstring
  13. publicvoid//设定左右孩子 
  14. this
  15. this
  16. publicbool//是否有左孩子 
  17. get
  18. returnnull
  19. publicbool//是否有右孩子 
  20. get
  21. returnnull
  22. publicbool//是否有右孩子 
  23. get
  24. return
  25.  
  26.     #endregion 
  27. class
  28. staticvoidstring
  29. new"a"
  30. new"b"
  31. new"c"
  32. new"d"
  33. new"e"
  34. new"f"
  35. new"g"
  36. new"h"
  37. new"i"
  38. //构造一棵二叉树 
  39. "maxDepth:"
  40. new"1"
  41. new"2"
  42. new"3"
  43. new"4"
  44. new"5"
  45. new"6"
  46. new"7"
  47. new"8"
  48. new"9"
  49. new"10"
  50. new"11"
  51. new"12"
  52. new"13"
  53. //构造一棵二叉树 
  54. null
  55. null
  56. null
  57. null
  58. null
  59. null
  60. "maxDepth:"
  61. //计算深度 
  62. staticint
  63. ifnull
  64. return
  65. else
  66. int//递归计算左孩子的深度 
  67. int//递归计算右孩子的深度
  68. if
  69. return
  70. else
  71. return
  72. //先序遍历 //DLR 
  73. staticvoidint
  74. "-depth:"
  75. if
  76. if

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章标题:求二叉树的深度-创新互联
标题链接:http://azwzsj.com/article/dhdiie.html