注意:遍历时以根节点和左右子树,而不是左右节点。
四种基本的遍历思想为:
前序遍历:根结点 ---> 左子树 ---> 右子树
中序遍历:左子树---> 根结点 ---> 右子树
后序遍历:左子树 ---> 右子树 ---> 根结点
层次遍历:仅仅需按层次遍历就可以 (最直观)
比如。求以下二叉树的各种遍历
前序遍历:1 2 4 5 7 8 3 6
中序遍历:4 2 7 5 8 1 3 6
后序遍历:4 7 8 5 2 6 3 1
层次遍历:1 2 3 4 5 6 7 8
打印二叉树
先序遍历:先打印根 ;
/* //将二叉树先序遍历,用于测试结果
public static void preTraverseBinTree(TreeNode node){
if (node==null) {
return;
}
System.out.print(node.val+",");//根
if (node.left!=null) {//左
preTraverseBinTree(node.left);
}
if(node.right!=null){//右
preTraverseBinTree(node.right);
}
}
中序遍历:先左子树,再打印根
//将二叉树中序遍历,用于测试结果
public static void inTraverseBinTree(TreeNode node){
if (node==null) {
return;
}
if (node.left!=null) {
inTraverseBinTree(node.left);
}
System.out.print(node.val+",");
if(node.right!=null){
inTraverseBinTree(node.right);
}
}