数据结构之二叉树——相关问题总结

最近发现二叉树貌似很受面试官青睐,明天要参加某大型互联网公司二面,来总结总结热热身的说。二叉树顾名思义每个节点最多有两个孩子节点,由于二叉树的建立本身就是一个递归的过程,所以很多二叉树相关问题都可以使用递归的方法进行求解,但是也有很多面试官喜欢问×××的非递归实现。下面对一些常见的二叉树问题进行总结,原帖使用C,本小博用Java改写了一下。原文地址:http://blog.csdn.net/luc
摘要由CSDN通过智能技术生成

最近发现二叉树貌似很受面试官青睐,明天要参加某大型互联网公司二面,来总结总结热热身的说。二叉树顾名思义每个节点最多有两个孩子节点,由于二叉树的建立本身就是一个递归的过程,所以很多二叉树相关问题都可以使用递归的方法进行求解,但是也有很多面试官喜欢问×××的非递归实现。下面对一些常见的二叉树问题进行总结,原帖使用C,本小博用Java改写了一下。原文地址:http://blog.csdn.net/luckyxiaoqiang/article/details/7518888。

建立自己的二叉树结构

class BinaryTree {
	int data;
	BinaryTree left;
	BinaryTree right;
	
	public BinaryTree(int data) {
		this.data = data;
	}
}
、求二叉树节点个数

        //二叉树节点的个数(递归)
	//(1)如果二叉树为空,节点个数为0
	//(2)如果二叉树不为空,二叉树节点个数 = 左子树节点个数 + 右子树节点个数 + 1
	int GetNodeNum(BinaryTree root) {
		if(root == null) {
			return 0;
		}
		return GetNodeNum(root.left) + GetNodeNum(root.right) + 1;
	}
二、求二叉树深度

        //二叉树深度(递归)
	//(1)如果二叉树为空,二叉树的深度为0
	//(2)如果二叉树不为空,二叉树的深度 = max(左子树深度, 右子树深度) + 1
	int GetDepth(BinaryTree root) {
		if(root == null) {
			return 0;
		}
		return Math.max(GetDepth(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值