【左程云算法笔记017】二叉树遍历递归写法
目录
什么叫二叉树?
先序 思路:
先序 代码演示
中序 思路
中序 代码演示
后序 思路
后序 代码演示
视频
【算法讲解017【入门】二叉树及其三种序的递归实现】
什么叫二叉树?
--在内存里分配空间,每个节点都有一个左节点一个右节点,样子像树一样。
经典的二叉树分为三种序:
先序遍历(任何一棵子树):满足 中 左 右 的顺序遍历
即1 245 367
中序遍历(任何一棵子树):满足 左 中 右 的顺序
后序遍历(任何一棵子树):满足 左 右 中 的顺序
总结:
先序 思路:
遍历步骤很简单(有数字就打印,遇到空就返回再下一个方向)
先序 代码演示
先构建
class TreeNode{int val;//节点的值TreeNode left;//指向左子节点的引用TreeNode right;//指向右子节点的引用//构造函数TreeNode(int val) {this.val = val;}
}
//遍历步骤很简单(有数字就打印,遇到空就返回再下一个方向)public static void preOrder(TreeNode head){if(head == null){return;}System.out.print(head.val+" ");//先打印我自己preOrder(head.left);//然后遍历我的左树preOrder(head.right);//然后遍历我的右树}
中序 思路
遇到空返回
先去左树回来打印
再去右树结束
中序 代码演示
public static void inOrder(TreeNode head){if(head == null){return;}inOrder(head.left);System.out.println(head.val+" ");//再打印inOrder(head.right);}
后序 思路
遇到空 返回
先去左一直走再去右边
最后一次回来打印(即每个节点左边右边都去完了再打印)
后序 代码演示
public static void posOrder(TreeNode head){if(head == null){return;}posOrder(head.left);posOrder(head.right);System.out.println(head.val+" ");}