题解 | #二叉树遍历#

二叉树遍历

https://www.nowcoder.com/practice/4b91205483694f449f94c179883c1fef

#include <stdio.h>

typedef char BTDataType;
typedef struct BinaryTreeNode
{
	BTDataType data;
	struct BinaryTreeNode* left;
	struct BinaryTreeNode* right;
}BTNode;

BTNode* BuyBTNode(BTDataType x)
{
	BTNode* newNode = (BTNode*)malloc(sizeof(BTNode));
	if (newNode == NULL)
	{
		perror("malloc failed");
		return NULL;
	}
	newNode->data = x;
	newNode->left = NULL;
	newNode->right = NULL;
	return newNode;
}
BTNode* BinaryTreeCreate(BTDataType* a, int n, int* pi)
{
	//当*pi > n时,后续节点默认为空
	if (*pi >= n)
	{
		(*pi)++;
		return NULL;
	}

	if (a[*pi] == '#')
	{
		(*pi)++;
		return NULL;
	}
	BTNode* root = BuyBTNode(a[*pi]);
	(*pi)++;
	root->left = BinaryTreeCreate(a, n, pi);
	root->right = BinaryTreeCreate(a, n, pi);

	return root;
}

//针对char输出
void BTNodePrint(BTNode* node)
{
	if (node == NULL)
	{
		printf("");
	}
	else
	{
		printf("%c ", node->data);
	}
}

void  BinaryTreeInOrder(BTNode* root)
{
	if (root == NULL)
	{
		BTNodePrint(root);
		return;
	}
	BinaryTreeInOrder(root->left);
	BTNodePrint(root);
	BinaryTreeInOrder(root->right);
}

int main()
{
    char a[100] = {};
    while (scanf("%s", a) != EOF)
    {
        //创建二叉树
        int i = 0;
        BTNode* root = BinaryTreeCreate(a, 100, &i);
        //中序遍历
        BinaryTreeInOrder(root);
    }
    return 0;
}

全部评论

相关推荐

点赞 评论 收藏
分享
06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
mama3925:建议专业技能里测试移到最上面,加粗。然后适当加入些自动化测试工具。第二个项目,第三条亮点最后错别字。然后佬如果对自己很自信的话,可以项目放前面,然后项目里可以编造点测试经历,写在写在项目亮点的前两行。最后可加个自我评价,放个博客或者仓库链接
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务