【数据结构】二叉树的遍历
创始人
2024-02-16 20:09:10
0

目录

  • ☀️二叉树的构建
  • ☀️二叉树的遍历
    • 🌻前序遍历
    • 🌻中序遍历
    • 🌻后序遍历
  • ☀️完整代码展示


☀️二叉树的构建

便于理解二叉树的遍历,这里我们手动简单构建一个二叉树,当然,此处二叉树的构建并不是真正二叉树的构建方式,仅仅作为对本文所讲的二叉树遍历的一个参考。

代码如下:

typedef int BTDatatype;
typedef struct TreeNode
{BTDatatype data;struct TreeNode* left;struct TreeNode* right;
}BTNode;BTNode* BuyBTNode(BTDatatype x)
{BTNode* newnode = (BTNode*)malloc(sizeof(BTNode));if (newnode == NULL){perror("malloc fail");exit(-1);}newnode->data = x;newnode->left = NULL;newnode->right = NULL;return newnode;
}
int main()
{BTNode* n1 = BuyBTNode(1);BTNode* n2 = BuyBTNode(2);BTNode* n3 = BuyBTNode(3);BTNode* n4 = BuyBTNode(4);BTNode* n5 = BuyBTNode(5);BTNode* n6 = BuyBTNode(6);n1->left = n2;n2->left = n3;n1->right = n4;n4->left = n5;n4->right = n6;return 0;
}

所构建的二叉树图如下所示:
在这里插入图片描述

☀️二叉树的遍历

🌻前序遍历

前序遍历也称为先根遍历,依次访问二叉树的根节点、左子树、右子树。

对本文所构建的二叉树进行前序遍历的顺序为:

1 -> 2 -> 3 -> NULL -> NULL -> NULL -> 4 -> 5 -> NULL -> NULL -> 6 -> NULL -> NULL

代码如下:

void PrevOrder(BTNode* root)
{if (root == NULL){printf("NULL ");return;}printf("%d ", root->data);PrevOrder(root->left);PrevOrder(root->right);
}

结合本文所构建的二叉树运行的结果:
在这里插入图片描述


🌻中序遍历

中序遍历也称为中根遍历,依次访问二叉树的左子树、根节点、右子树。

对本文所构建的二叉树进行中序遍历的顺序为:

NULL -> 3 -> NULL -> 2 -> NULL -> 1 -> NULL -> 5 -> NULL -> 4 -> NULL -> 6 -> NULL

代码如下:

void InOrder(BTNode* root)
{if (root == NULL){printf("NULL ");return;}InOrder(root->left);printf("%d ", root->data);InOrder(root->right);
}

结合本文所构建的二叉树运行的结果:
在这里插入图片描述


🌻后序遍历

中序遍历也称为后根遍历,依次访问二叉树的左子树、右子树、根节点。

对本文所构建的二叉树进行后序遍历的顺序为:

NULL -> NULL -> 3 -> NULL -> 2 -> NULL -> NULL -> 5 -> NULL -> NULL -> 6 -> 4 -> 1

代码如下:

void PostOrder(BTNode* root)
{if (root == NULL){printf("NULL ");return;}PostOrder(root->left);PostOrder(root->right);printf("%d ", root->data);
}

结合本文所构建的二叉树运行的结果:
在这里插入图片描述

☀️完整代码展示

#include 
#include 
typedef int BTDatatype;
typedef struct TreeNode
{BTDatatype data;struct TreeNode* left;struct TreeNode* right;
}BTNode;BTNode* BuyBTNode(BTDatatype x)
{BTNode* newnode = (BTNode*)malloc(sizeof(BTNode));if (newnode == NULL){perror("malloc fail");exit(-1);}newnode->data = x;newnode->left = NULL;newnode->right = NULL;return newnode;
}
//前序遍历
void PrevOrder(BTNode* root)
{if (root == NULL){printf("NULL ");return;}printf("%d ", root->data);PrevOrder(root->left);PrevOrder(root->right);
}
//中序遍历
void InOrder(BTNode* root)
{if (root == NULL){printf("NULL ");return;}InOrder(root->left);printf("%d ", root->data);InOrder(root->right);
}
//后序遍历
void PostOrder(BTNode* root)
{if (root == NULL){printf("NULL ");return;}PostOrder(root->left);PostOrder(root->right);printf("%d ", root->data);
}
int main()
{BTNode* n1 = BuyBTNode(1);BTNode* n2 = BuyBTNode(2);BTNode* n3 = BuyBTNode(3);BTNode* n4 = BuyBTNode(4);BTNode* n5 = BuyBTNode(5);BTNode* n6 = BuyBTNode(6);n1->left = n2;n1->right = n4;n2->left = n3;n4->left = n5;n4->right = n6;//前序遍历PrevOrder(n1);printf("\n");//中序遍历InOrder(n1);printf("\n");//后序遍历PostOrder(n1);printf("\n");return 0;
}

相关内容

热门资讯

原创 私... 西安雁塔警方通报查处一家提供“异性陪侍”的私人影院,经营者被刑拘,陪侍人员被行拘。这背后,为何处理结...
天玑科技及相关责任人因涉嫌串通... 12月22日,天玑科技(300245.SZ)发布公告,公司近期收到上海市虹口区人民检察院送达的《起诉...
「期刊文摘」 蔡昉:人工智能时... 蔡昉:人工智能时代的社会保障,理念更新与制度建设 期刊文摘 ★★★★★ 一、引言 人们惊叹于近年来人...
千万人受益 详解信用修复政策 个人信用修复政策重磅落地。12月22日,中国人民银行发布一次性信用修复政策:符合相关条件的逾期信息,...
“祥源系”爆雷后,“浙商大佬”... 22日晚间,交建股份、祥源文旅双双发布公告称,公司于2025年12月22日收到公司实际控制人俞发祥家...
涉嫌串通投标!天玑科技及相关责... 天玑科技12月22日晚间公告,公司于近日收到上海市虹口区人民检察院送达的《起诉书》,上海市虹口区人民...
深圳龙华举行法律援助志愿律师首... 为进一步提升法律援助服务质量,加强法律援助志愿律师队伍建设,12月17日下午,龙华区司法局组织开展了...
(图表)十年来全国检察机关共办... 新华社图表,北京,2025年12月22日 记者从最高人民法院、最高人民检察院12月22日举行的发布...
反思独居蒋女士离世事件:补齐制... 家住上海虹口区的46岁独居人士蒋女士,12月14日因病离世,但她的遗产不能用来购买墓地,引发舆论广泛...
俄副外长:保证不进攻欧盟北约,... 【文/观察者网 柳白】 据俄新社报道,当地时间12月22日,俄罗斯外交部副部长谢尔盖·里亚布科夫在...