求二叉树的深度-创新互联
对于二叉树的大的深度,可以采用递归算法。
算法描述如下:
如果根结点为null,那么深度=0
如果根结点不是null,那么就看该当前结点的左孩子的深度和右孩子的深度
如果左孩子深度>=右孩子的深度,那么当前根结点的深度就是左孩子的深度+1.
反之则为右孩子的深度+1
对每个左孩子右孩子也是采用同样的算法。到某一节点是null的时候,才能返回0;
之前的文章有关于二叉树遍历的算法的描述。此处,对于遍历可以做一些小的改进,使它可以在遍历的时候计算出当前节点的深度。只要在递归方法中加入一个深度参数,每次调用的递归方法的时候,该参数都会自增1.则可以计算出深度。
假设构造出2棵树
字母树
数字树
采用算法计算深度,和遍历。
结果如下:
具体代码如下:
- using
- using
- using
- using
- namespace
- #region 节点的定义
- class
- publicstring
- public
- public
- publicstring
- publicvoid//设定左右孩子
- this
- this
- publicbool//是否有左孩子
- get
- returnnull
- publicbool//是否有右孩子
- get
- returnnull
- publicbool//是否有右孩子
- get
- return
- #endregion
- class
- staticvoidstring
- new"a"
- new"b"
- new"c"
- new"d"
- new"e"
- new"f"
- new"g"
- new"h"
- new"i"
- //构造一棵二叉树
- "maxDepth:"
- new"1"
- new"2"
- new"3"
- new"4"
- new"5"
- new"6"
- new"7"
- new"8"
- new"9"
- new"10"
- new"11"
- new"12"
- new"13"
- //构造一棵二叉树
- null
- null
- null
- null
- null
- null
- "maxDepth:"
- //计算深度
- staticint
- ifnull
- return
- else
- int//递归计算左孩子的深度
- int//递归计算右孩子的深度
- if
- return
- else
- return
- //先序遍历 //DLR
- staticvoidint
- "-depth:"
- if
- if
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章标题:求二叉树的深度-创新互联
标题链接:http://azwzsj.com/article/dhdiie.html