题解 | #二叉树遍历#

二叉树遍历

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

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct TreeNode {
	char data;
	struct TreeNode* lchild;
	struct TreeNode* rchild;
}TreeNode;

// 前序建立二叉树 (中序,后序)
void createTree(TreeNode** T, char* data, int* index) {
	char ch = data[*index];
	*index += 1;
	
	if (ch == '#') {
		*T = NULL;
	} 
	else {
		*T = (TreeNode*)malloc(sizeof(TreeNode));
		(*T)->data = ch;
		
		createTree(&((*T)->lchild), data, index);
		createTree(&((*T)->rchild), data, index);
	}
} 

// 中序遍历
void inOrder(TreeNode* T) {
	if (T == NULL) return;
	inOrder(T->lchild);
	printf("%c ", T->data);
	inOrder(T->rchild); 
} 

int main()
{
	int index = 0;
	
	char s[110];
	scanf("%s", s);
	
	TreeNode* T;
	
	createTree(&T, s, &index);
	
	inOrder(T);
	 
	return 0;
}

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务