Jey*_*ram 3 c binary-tree linked-list
我在接受采访时被问及双链表和二叉树的节点结构之间的区别.
双重链表结构
typedef struct
{
int data;
struct node * next;
struct node * prev;
}node;
Run Code Online (Sandbox Code Playgroud)
二叉树结构
typedef struct
{
int data;
struct node * left;
struct node * right;
}node;
Run Code Online (Sandbox Code Playgroud)
我发现节点结构没有任何区别,除了它们的使用方式.你能不能给我一些分歧?
我想你已经回答了自己的问题.除了指针(next/prev和left/right)名称的明显差异之外,差异是:
n.next链接到m那么m.prev链接到n.在二叉树中不是这种情况.如果双向链表也是循环的,则以下内容也成立:
n.next链接到n并n.prev链接到n.这在二叉树中是不可能的:n.left并且n.right不链接到同一节点.n.next并且n.prev可以指向没有节点(即,树只是叶节点)但是在具有一个节点的循环双向链表中,两个链路总是具有值(尽管是相同的节点).n.left或者赋值n.right.如果二进制树不平衡,则可能是所有节点都具有值n.right但不是n.left.对于所有指针都具有值的循环双向链表,情况并非如此.在结构和内容方面,节点是相同的,但不同之处在于如何使用指针以及它们的值是什么.
| 归档时间: |
|
| 查看次数: |
3138 次 |
| 最近记录: |