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;
}