二叉树的前序遍历、中序遍历、后序遍历
一,二叉树的定义
二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者空集(称为空二叉树),或者由一个根节点和两颗互不相交的,分别称为根节点的左子树和右子树的二叉树组成,是有序树。
class TreeNode{ public char val; public TreeNode left; public TreeNode right; public TreeNode(char val) { this.val = val; } }
分为left结点和right结点
列举一个二叉树,图如下:
二,二叉树的遍历
二叉树的遍历有“前序遍历”、“中序遍历”、“后序遍历”
1.前序遍历:前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。 2.中序遍历:中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树。 3.后序遍历:先左后右再根,即首先遍历左子树,然后遍历右子树,最后访问根结点。
由上图得出的遍历顺序结果: 前序(preOrder): A B D E H C F G 中序(inOrder): D B E H A F C G 后序(postOrder): D H E B F G C A
三,代码(递归实现)
1.前序遍历
//前序遍历; void preOrder(TreeNode root) { if(root == null) { return; } System.out.print(root.val + " "); preOrder(root.left); preOrder(root.right); }
2.中序遍历
//中序遍历; void inOrder(TreeNode root) { if(root == null) { return; } inOrder(root.left); System.out.print(root.val + " "); inOrder(root.right); }
3.后续遍历
//后序遍历; void postOrder(TreeNode root) { if(root == null) { return; } postOrder(root.left); postOrder(root.right); System.out.print(root.val + " "); }