【数据结构与算法】二叉树遍历:深度优先遍历

1.二叉树遍历:深度优先遍历

1.1 简述

二叉树的遍历包括深度优先遍历和广度优先遍历。其中广度优先遍历则是一层一层的遍历二叉树;而深度优先遍历则是从根节点开始沿着一条链路一直访问下去,直到没有节点为止然后回到上一个节点按照另一条链路开始访问知道遍历所有节点为止;

1.2 深度优先遍历

这里重点介绍深度优先遍历,深度优先遍历又按照根节点的访问顺序分为先根遍历和后根遍历以及中根遍历;
在这里插入图片描述

以上图二叉树为例,先根遍历(根节点–左节点–右节点)的结果就是:124563,而后根遍历(左节点–右节点–根节点)的结果就是:452631,中根遍历(左节点-根节点-右节点)的结果就是425136

1.3 前期代码准备(节点实体类)
//节点类
@Getter
@Setter
public class TreeNode<T> {
	private T value,
	//左孩子节点
	private TreeNode<T> leftChild;
	//右孩子节点
	private TreeNode<T> rightChild;
}
1.4 递归实现深度优先遍历
public class Test {
	
	//先根遍历
	public <T> List<T> preorderTraversal(TreeNode<T> node) {
		List<T> res = new ArrayList();
		if (null == node) {
			return res;
		}
		res.add(node.getValue());
		res.addAll(preorderTraversal(node.getLeftChild()));
		res.addAll(preorderTraversal(node.getRightChild()));
	}
	//中根遍历
	public <T> List<T> inorderTraversal(TreeNode<T> node) {
	List<T> res = new ArrayList();
		if (null == node) {
			return res;
		}
		res.addAll(preorderTraversal(node.getLeftChild()));
		res.add(node.getValue());
		res.addAll(preorderTraversal(node.getRightChild()));
	}
	//后根遍历
	public <T> List<T>postorderTraversal(TreeNode<T> node) {
	List<T> res = new ArrayList();
		if (null == node) {
			return res;
		}
		res.addAll(preorderTraversal(node.getLeftChild()));
		res.addAll(preorderTraversal(node.getRightChild()));
		res.add(node.getValue());
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值