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

本文总结了二叉树在面试中常遇到的问题,包括前序遍历等,原帖以C语言描述,这里提供了Java语言的改写版本,为面试做准备。
摘要由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(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值