简单二叉树与基本链表格式种类
TreeNode(基本二叉树)
struct TreeNode{
int val //树节点编号
struct TreeNode *left; //左衍生节点
struct TreeNode *right; //右衍生节点
TreeNode(int x) : //二叉树链表初始化
val(x),left(NULL),right(NULL) {
}
};
TreeNode是基本二叉树 它的遍历和反遍历按照层遍历而来
图示二叉树序列化为{0,1,2,#,#,3,4,#,#,#,5}
ListNode(单链表)
struct ListNode{
int val; //链表编号
struct ListNode *next; //链表节点的下一个节点地址
struct ListNode(int x) : //初始化
val(x),next(NULL) {
}
};
ListNode是基本链表格式 格式为{1,2,3,4,5} 从头到尾走序,中间用 , 分开.
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){
}
};
TreeLinkNode是在TreeNode的基础上另外加一条向链接节点的线,数据序列化从TreeNode的基础上额外增加一条next链接节点的数据,途中链接节点为红色的箭头
上图中2节点的next为3节点,以上链接二叉树会被序列化为{[1,2,3,#,#,4,#,#,5],[#,2,#,#,#,#]}
RndomListNode
struct RandomListNode {
int label;
struct RandomListNode *next, *random;
RandomListNode(int x) :
label(x), next(NULL), random(NULL) {
}
};
在listNode基础上,额外增加一个random的链接节点,数据的序列化格式在ListNode的基础上,额外增加random节点的数据,图中红色链路为random的连接点。
UndirectedGraphNode(无向图)
struct UndiirectedGraphNode
{
int label;
vectory<struct UndirectedGraphNode *> nei;
UndirectedGraphNode(int x):
label(x){
}
}
UndirectedGraphNode无向图里每一个label No,所有节点根据label从小到大输入。