二叉树的三种递归遍历(前序,中序,后序)

今天跟大家分享二叉树常见的三种遍历方式。
根据访问结点操作发生位置命名。

  1. NLR:前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点的操作发生在遍历其左右子树之前。
  2. LNR:中序遍历(Inorder Traversal)——访问根结点的操作发生在遍历其左右子树之中(间)。
  3. LRN:后序遍历(Postorder Traversal)——访问根结点的操作发生在遍历其左右子树之后。
    下面是一个二叉树,我将递归遍历这个二叉树将它的每个节点的值输出:
    在这里插入图片描述代码:
public class TestTree {
    static class Node{
        public  char val;
        public Node left;
        public Node right;
         public Node(char val) {
             this.val = val;
             this.left = null;
             this.right = null;
         }
     }
     static Node build(){
         Node A = new Node('A');
         Node B = new Node('B');
         Node C = new Node('C');
         Node D = new Node('D');
         Node E = new Node('E');
         Node F = new Node('F');
         Node G = new Node('G');
         A.left = B;
         A.right = C;
         B.left = D;
         B.right = E;
         C.left = F;
         C.right = G;
         return A;
     }
    static void preorder(Node root) {//前序遍历
         if(root==null) {
           return;
         }
        System.out.println(root.val);
         preorder(root.left);
         preorder(root.right);
    }
    static void inorder(Node root) {//中序遍历
        if(root==null) {
            return;
        }
        inorder(root.left);
        System.out.println(root.val);
        inorder(root.right);
    }
    static void postorder(Node root){//后序遍历
        if(root==null) {
            return;
        }
        postorder(root.left);
        postorder(root.right);
        System.out.println(root.val);
    }
    public static void main(String[] args) {
      Node root = build();
      preorder(root);
      Node root1 = build();
      inorder(root1);
      Node root2 = build();
      postorder(root2);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_45755718/article/details/105621113