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

本文介绍了一种使用递归算法计算二叉树高度和节点总数的方法。通过递归地获取左右子树的深度并加一得到整棵树的高度;通过累加左右子树的节点数再加一得到整棵树的节点总数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.     } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值