牛客编程题高级数据结构格式说明

参考代码下载地址 https://static.nowcoder.com/b/nowcoder_ds.zip 有任何理解问题请联系邮件 liuhaopeng@nowcoder.com

TreeNode

struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};

TreeNode是经典的二叉树节点,在数据的序列化和反序列按照层遍历来处理的。 TreeNode 以上二叉树会被序列化为 {1,2,3,#,#,4,#,#,5} 1:root节点1,是第一层 2,3:然后第二层是2,3 #,#,4,#:第三层分别是2节点的两个孩子节点空,用#来表示,然后3节点的左孩子为4,右孩子节点为# #,5:第四层4节点的左孩子是空,右孩子为5 最后一层5节点的两个空孩子不遍历

把一棵树保存为测试数据文本代码请参考压缩包 https://static.nowcoder.com/b/nowcoder_ds.zip

ListNode

struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};

单链表结构,格式{0,1,2,3,4},每个链表节点一个数字,从头到尾排布,通过,分开。

TreeLinkNode

struct TreeLinkNode {
	int val;
	struct TreeLinkNode *left;
	struct TreeLinkNode *right;
	struct TreeLinkNode *next;
	TreeLinkNode(int x) :
			val(x), left(NULL), right(NULL), next(NULL) {
	}
};

在TreeNode的基础上,额外横向增加一个链接节点,数据的序列化格式在TreeNode的基础上,额外增加next节点的数据,图中红色链路为next 图片说明 上图中2节点的next为3节点,以上链接二叉树会被序列化为 {[1,2,3,#,#,4,#,#,5],[#,3,#,#,#]}

注意这个数据结构中,所有的节点val必须不同,否则OJ在解析数据的时候后半段的link数据就无法定位准确的节点

把一个链接二叉树保存为测试数据文本代码请参考压缩包 https://static.nowcoder.com/b/nowcoder_ds.zip

RandomListNode

struct RandomListNode {
	int label;
	struct RandomListNode *next, *random;
	RandomListNode(int x) :
			label(x), next(NULL), random(NULL) {
	}
};

在ListNode基础上,额外增加一个random的链接节点,数据的序列化格式在ListNode的基础上,额外增加random节点的数据,图中红色链路为random 上图对应测试数据为 {-1,8,7,-3,4,4,-3,#,#,8},前五个数字是链表节点,后五个数字表示各个节点的random的链接点

注意这个数据结构中,所有的节点label必须不同,否则OJ在解析数据的时候后半段的random数据就无法定位准确的节点

把一个随机链表保存为测试数据文本代码请参考压缩包 https://static.nowcoder.com/b/nowcoder_ds.zip

UndirectedGraphNode

struct UndirectedGraphNode {
	int label;
	vector<struct UndirectedGraphNode *> neighbors;
	UndirectedGraphNode(int x) :
			label(x) {
	}
};

无向图里每个节点都有一个 唯一的数字ID ,每个节点的序列化通过[]保存,每个节点第一个元素后跟随的是这个节点连接的其他节点,所有节点根据label从小到大输出,以下图 图片说明 上图中注意2节点还链接到自己节点,上图对应测试数据为{[0,1,2],[1,2],[2,2]},从小到大0,1,2三个节点

注意这个数据结构中,所有的节点label必须不同,否则OJ在解析数据节点后半段的连接点就无法定位准确的节点

把一个无向图保存为测试数据文本代码请参考压缩包 https://static.nowcoder.com/b/nowcoder_ds.zip

全部评论
看不懂,哈哈哈哈,66666
5 回复 分享
发布于 2020-10-27 16:08
66
1 回复 分享
发布于 2020-10-10 21:39
66
1 回复 分享
发布于 2020-10-26 20:02
没看懂,6就完事了
1 回复 分享
发布于 2021-02-23 13:53
6
点赞 回复 分享
发布于 2020-09-23 09:58
666
点赞 回复 分享
发布于 2020-10-10 15:03
666666
点赞 回复 分享
发布于 2020-10-12 19:23
6666
点赞 回复 分享
发布于 2020-10-13 10:56
6
点赞 回复 分享
发布于 2020-10-16 12:26
6
点赞 回复 分享
发布于 2020-10-16 16:53
666
点赞 回复 分享
发布于 2020-10-18 22:22
666
点赞 回复 分享
发布于 2020-10-19 21:48
666666
点赞 回复 分享
发布于 2020-10-22 23:27
666666666666666666666
点赞 回复 分享
发布于 2020-10-25 11:53
66
点赞 回复 分享
发布于 2020-10-25 20:44
Orz
点赞 回复 分享
发布于 2020-10-27 21:19
666
点赞 回复 分享
发布于 2020-10-28 12:48
666
点赞 回复 分享
发布于 2020-10-30 21:55
链接二叉树的序列化 "[#,2,#,#]"是怎么得出来的,这个是层序遍历吗?怎么看?
点赞 回复 分享
发布于 2020-11-03 10:23
666666
点赞 回复 分享
发布于 2020-11-13 14:24

相关推荐

11-05 07:29
贵州大学 Java
点赞 评论 收藏
分享
Noel_:中石油是这样的 哥们侥幸混进免笔试名单 一看给我吓尿了
点赞 评论 收藏
分享
68 96 评论
分享
牛客网
牛客企业服务