递归--二叉树遍历,求深度,求二叉树节点个数

本文为递归实现二叉树的各种操作。

二叉树的前序遍历:(根--左--右)

public static void PreOrder(TreeNode tree){
		if(tree != null){
			System.out.print(tree.val);
			PreOrder(tree.left);
			PreOrder(tree.right);
		}
	}
二叉树的中序遍历:(左--根--右)

public static void InOrder(TreeNode tree){
		if(tree != null){
			InOrder(tree.left);
			System.out.print(tree.val);
			InOrder(tree.right);
		}
	}

二叉树的后序遍历:(左--右--根)

public static void PostOrder(TreeNode tree){
		if(tree != null){
			PostOrder(tree.left);
			PostOrder(tree.right);
			System.out.print(tree.val);
		}
	}

二叉树层次遍历:(从上到下,从左到右)

思想:利用队列实现,在访问二叉树某一层节点时,把下一层的节点指针预先记忆在队列中,利用队列安排逐层访问的顺序。

public static void LevelOrder(TreeNode tree){
		TreeNode p = null;
		Queue<TreeNode> queue = new LinkedList<TreeNode>(); 
		queue.add(tree);
		while(!queue.isEmpty()){			
			p = queue.poll();	
			System.out.print(p.val);
			if(p.left != null)
				queue.add(p.left);
			if(p.right != null)
				queue.add(p.right);
		}
	}
求二叉树的高度:

思想:分别找出左右子树的高度,找出最大的+1。递归实现

public static int heigh(TreeNode tree){
		if(tree == null)
			return 0;
		else
			return 1 + Math.max(heigh(tree.left),heigh(tree.right));
	} 
求二叉树节点个数:

思想:分别计算左右子树的节点个数,相加后在+1.递归实现

public static int size(TreeNode tree){
		if(tree == null)
			return 0;
		else
			return 1 + size(tree.left) + size(tree.right);
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值