java 求二叉树的深度 / 节点总数

1.判断根节点是否为空

2.递归获取左子树的深度

3.递归获取右子树的深度

  1. public int hight(Node node){  
  2.         if(node==null){  
  3.             return 0;  
  4.         }else{  
  5.             int i=hight(node.getLeftChild());  
  6.             int j=hight(node.getRightChild());  
  7.             return (i<j)?(j+1):(i+1);  
  8.         }  
  9.     }  



讲一下这里的递归原理:当遍历到CE时,左子树node.getLeftChild()和右子树node.getRightChild()返回0+1,此时深度为1,当到BD时,BD的深度都为1,此时返回1+1=2,同理,一步一步往回退,直到左右子树遍历一遍得到左右子树的深度然后进行比较返回最大的值+1就是整棵树的深度。

那么求二叉树的所有节点的个数,递归原理与此相同。


求二叉树节点总数:

求二叉树的节点数:返回左子树和右子树个数的和,然后加上一个根节点

  1. public int sumNode(Node node){  
  2.         if(node==null){  
  3.             return 0;  
  4.         }else{  
  5.             int a=sumNode(node.getLeftChild());  
  6.             int b=sumNode(node.getRightChild());  
  7.             return 1+a+b;  
  8.         }  
  9.     } 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值