二叉树的遍历分为以下三种:
前序遍历:遍历顺序规则为【根节点,左节点,右节点】
中序遍历:遍历顺序规则为【左节点,根节点,右节点】
后序遍历:遍历顺序规则为【左节点,右节点,根节点】
层序遍历:一层一层的遍历二叉树
已知某个未知的二叉树中前、中、后任意两个遍历的结果,就可以确定该二叉树。
这里遍历时要注意,根节点、左节点、右节点,可以看成整个的部分,然后再在每个部分中一个节点一个节点的分析,要细致。
这里主要用到函数的递归。运用递归函数可以极大的节省代码,要熟练掌握。
// 前序遍历(递归实现)
public void PreOrder(TreeNode node) {
if (node != null) {
System.out.print(node.val);//前
PreOrder(node.left);
PreOrder(node.right);
}
}
//中序遍历(递归实现)
public void InOrder(TreeNode node) {
if (node != null) {
InOrder(node.left);
System.out.print(node.val);//中
InOrder(node.right);
}
}
//后序遍历(递归实现)
public void PostOrder(TreeNode node) {
if (node != null) {
PostOrder(node.left);
PostOrder(node.right);
System.out.print(node.val);//后
}
}
//层序遍历(广度优先遍历)
public void LayerOrder(TreeNode root) {
Queue<TreeNode> queue = new ArrayDeque<>();
if (root != null) queue.offer(root);
while (!queue.isEmpty()) {
TreeNode node = queue.poll();
System.out.print(node.val);
if (node.left != null) queue.offer(node.left);
if (node.right != null) queue.offer(node.right);
}
}