深度优先遍历主要依靠递归实现,初学递归,研究二叉树的遍历顺序有助于加深对递归的理解。
例:
*注意对比代码顺序
1.前序:
public void deep_search(TreeNode root)
{
if(root==null)
return;
System.out.printf("%4d",root.val);
deep_search(root.left);
deep_search(root.right);
return;
}
输出:
2.中序:
public void deep_search(TreeNode root)
{
if(root==null)
return;
deep_search(root.left);
System.out.printf("%4d",root.val);
deep_search(root.right);
return;
}
输出:
3.后序:
public void deep_search(TreeNode root)
{
if(root==null)
return;
deep_search(root.left);
deep_search(root.right);
System.out.printf("%4d",root.val);
return;
}
输出:
可以看出,前中后序的实现在代码上也是一一对应的,代码操作次序改变,输出顺序随之改变。