Recursive traversal method of binary tree in C++ 2-1

As mentioned in "Non-recursive traversal method of binary tree in C++ 2-1" , the traversal of binary tree is divided into four types: pre-order traversal, in-order traversal, post-order traversal and layer-order traversal. The binary tree to be traversed is shown in Figure 1.

Figure 1 Binary tree structure

For the code to create the binary tree, please refer to "Non-recursive Traversal Method of Binary Tree in C++ 2-1" .

1 Recursive implementation of preorder traversal

The output order of preorder traversal is root node, left subtree and right subtree.

1.1 Flowchart

The recursive process of preorder traversal is shown in Figure 2.

Figure 2 Recursive flowchart of preorder traversal

1.2 Code implementation

A recursive implementation of preorder traversal is shown below.

void preOrderTraveral(TreeNode* node)

{

    if (node == nullptr)

    {

        return;

    }

    cout << node->data <<endl;

    preOrderTraveral(node->leftChild);

    preOrderTraveral(node->rightChild);

}

2 Recursive implementation of in-order traversal

The output order of inorder traversal is left subtree, root node and right subtree.

2.1 Flowchart

The recursive process of in-order traversal is shown in Figure 3.

Figure 3 Recursive flowchart of in-order traversal

2.2 Code implementation

A recursive implementation of inorder traversal is shown below.

void inOrderTraveral(TreeNode* node)

{

    if (node == nullptr)

    {

        return;

    }

    inOrderTraveral(node->leftChild);

    cout << node->data << endl;

    inOrderTraveral(node->rightChild);

}

3 Recursive implementation of post-order traversal

The output of the post-order traversal is the left subtree, the right subtree and the root node.

3.1 Flowchart

The recursive process of post-order traversal is shown in Figure 4.

Figure 4 Recursive flowchart of post-order traversal

3.2 Code implementation

A recursive implementation of postorder traversal is shown below.

void postOrderTraveral(TreeNode* node)

{

    if (node == nullptr)

    {

        return;

    }

    postOrderTraveral(node->leftChild);

    postOrderTraveral(node->rightChild);

    cout << node->data << endl;

}

Guess you like

Origin blog.csdn.net/hou09tian/article/details/128394034