二叉树:前序遍历/中序遍历/后序遍历—代码实现
二叉树:前序遍历/中序遍历/后序遍历—代码实现
说明
代码实现
初始化二叉树
函数:void BinaryTree(void)
前序遍历
函数:void TraverseTree_Preorder(struct BinaryTreeNode* root)
中序遍历
函数:void TraverseTree_Inorder(struct BinaryTreeNode* root)
后序遍历
函数:void TraverseTree_Postorder(struct BinaryTreeNode* root)
/** * @file BinaryTreeNodeTraverse.c * @author xgx * @date 2022-05-30 * @brief BinaryTreeNode Preorder/Inorder/Postorder Traverse * * @copyright Copyright (c) 2022 * */ #include <stdio.h> //Binary Tree Node struct BinaryTreeNode { char data; //data struct BinaryTreeNode *lChild; //left child struct BinaryTreeNode *rChild; //right child }; /* Preorder Traversal*/ void TraverseTree_Preorder(struct BinaryTreeNode* root) { if(root == NULL) { return; } printf("%c ",root->data); //root TraverseTree_Preorder(root->lChild); //left child TraverseTree_Preorder(root->rChild); //right child } /* Inorder Traversal*/ void TraverseTree_Inorder(struct BinaryTreeNode* root) { if(root == NULL) { return; } TraverseTree_Inorder(root->lChild); //left child printf("%c ",root->data); //root TraverseTree_Inorder(root->rChild); //right child } /* Postorder Traversal*/ void TraverseTree_Postorder(struct BinaryTreeNode* root) { if(root == NULL) { return; } TraverseTree_Postorder(root->lChild); //left child TraverseTree_Postorder(root->rChild); //right child printf("%c ",root->data); //root } void BinaryTree(void) { //create node struct BinaryTreeNode NodeA = { A, NULL, NULL}; struct BinaryTreeNode NodeB = { B, NULL, NULL}; struct BinaryTreeNode NodeC = { C, NULL, NULL}; struct BinaryTreeNode NodeD = { D, NULL, NULL}; struct BinaryTreeNode NodeE = { E, NULL, NULL}; struct BinaryTreeNode NodeF = { F, NULL, NULL}; struct BinaryTreeNode NodeG = { G, NULL, NULL}; struct BinaryTreeNode NodeH = { H, NULL, NULL}; //create node connector NodeA.lChild = &NodeB; NodeA.rChild = &NodeF; NodeB.rChild = &NodeC; NodeC.lChild = &NodeD; NodeC.rChild = &NodeE; NodeF.rChild = &NodeG; NodeG.lChild = &NodeH; printf("Preorder Result: "); TraverseTree_Preorder(&NodeA); //Preorder Traversal printf("Inorder Result: "); TraverseTree_Inorder(&NodeA); //Inorder Traversal printf("Postorder Result: "); TraverseTree_Postorder(&NodeA); //Postorder Traversal } int main(int argc, char **argv) { BinaryTree(); return 0; }
下一篇:
二叉树的遍历_一看就会系列