二叉树的遍历
所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。
前中后序
- NLR:前序遍历(先序遍历)——访问根结点—>根的左子树—>根的右子树。
- LNR:中序遍历——根的左子树—>根节点—>根的右子树。
- LRN:后序遍历——根的左子树—>根的右子树—>根节点。
由于被访问的结点必是某子树的根,所以N(Node)、L(Left subtree)和R(Right subtree)又可解释为根、根
的左子树和根的右子树。NLR、LNR和LRN分别又称为先根遍历、中根遍历和后根遍历。
遍历二叉树示例:
前序遍历:ABDEHCFG
中序遍历:DBEHAFCG
后序遍历:DHEBFGCA
代码演示:
递归方式:
//root表示根节点,left表示左孩子,right表示右孩子
//前序遍历:根节点--》根节点的左子树--》根节点的右子树
public void preOrder(BTNode root){
if(root!=null){
System.out.print(root.val+" ");
preOrder(root.left);
preOrder(root.right);
}
}
//中序遍历:根节点的左子树--》根节点--》根节点的右子树
public void inOrder(BTNode root){
if(root!=null){
inOrder(root.left);
System.out.print(root.val+" ");
inOrder(root.right);
}
}
//后序遍历:根节点的左子树--》根节点的右子树--》根节点
public void postOrder(BTNode root){
if(root!=null)