Leetcode:探索二叉树(递归方式,Leetcode144,94,145)

本章目标:

  1. 理解和区分树的遍历方法
  2. 能够运用递归方法解决树的为前序遍历、中序遍历和后序遍历问题
  3. 能用运用迭代方法解决树的为前序遍历、中序遍历和后序遍历问题
  4. 能用运用广度优先搜索解决树的层序遍历问题

1. 二叉树的遍历方法

(1). 前序遍历:先打印根节点,再打印左儿子,最后打印右儿子。
(2). 中序遍历:先打印左儿子,再打印根节点,最后打印右儿子。
(3). 后序遍历:先打印左儿子,再打印右儿子,最后打印根节点。
(4). 层序遍历:打印当前层的每一个节点,然后打印下一层的。

2. 递归方式

递归的方式应该是最简单的,只需要控制打印的位置就可以得到想要的结果。
(1). 前序遍历:Leetcode144题。

public List<Integer> preorderTraversal(TreeNode root) {
	List<Integer> res = new ArrayList<>();
	if(root == null){
		return res;
	}
	preorder(res,root);
	return res;
}

public void preorder(List<Integer> res,TreeNode root){
	if(root == null){
		return;
	}
	res.add(root.val);
	preorder(res,root.left);
	preorder(res,root.right);
}

(2). 中序遍历:Leetcode94,只需要对 res.add(root.val) 的位置进行修改就可以,将其放在 preorder(res,root.left);preorder(res,root.right); 之间即为中序遍历:

	preorder(res,root.left);
	res.add(root.val);
	preorder(res,root.right);

(3). 后序遍历:Leetcode145,同样的,后序遍历只需要将其放在添加的最后即可进行后序遍历:

	preorder(res,root.left);
	preorder(res,root.right);
	res.add(root.val);
点赞