目录
题目
思路
从根节点开始遍历,在节点不为空的前提下,进行类似与数学的分类讨论!!!接下来请各位看代码部分,有疑问评论区留言,有问必答!!!
数据结构代码
#include <algorithm>
#include <iostream>
using namespace std;
//定义全局变量
char zdy;
//定义二叉树
typedef struct Node
{
char data;
Node *left, *right;
} BT;
//利用先序遍历创建二叉树
void pre(BT *&Root)
{
char c;
cin >> c;
if (c == '#') Root = NULL;
else
{
Root = (BT *)malloc(sizeof(Node));
Root->data = c;
pre(Root->left);
pre(Root->right);
}
}
//主体函数
void printf(BT *&Root)
{
if (Root != NULL) //在节点不为空的前提下,考虑问题
{
if (Root->data == zdy && !Root->left && !Root->right) cout << "L:#,R:#"; //按照节点是否为指定节点进行分类讨论
else if (Root->data == zdy && Root->left && !Root->right) cout << "L:" << Root->left->data << ",R:#";
else if (Root->data == zdy && !Root->left && Root->right) cout << "L:#,"<< "R:" << Root->right->data;
else if (Root->data == zdy && Root->left && Root->right) cout << "L:" << Root->left->data << ",R:" << Root->right->data;
else //该节点非指定节点,继续递归遍历左右子树
{
printf(Root->left);
printf(Root->right);
}
}
}
int main()
{
BT *Root;
pre(Root);
cin >> zdy;
printf(Root);
return 0;
}
小结
博主创作不易,🥂(❁´◡`❁)您的点赞➕评论➕收藏⭐是作者创作的最大动力🤞