我想知道我是否可以使用链表创建二叉树。 在每个节点中,有一个较小的链表来保存该特定节点的信息。 我正在寻找关于如何使每个节点保持另一个链表的提示。这是作业。
答案 0 :(得分:1)
如果您希望树节点数据作为链表而不是整数,那么您可以使用此
public class Tree {
static class LinkedList{
int data;
LinkedList next;
public LinkedList(int data, LinkedList next){
this.data = data;
this.next = next;
}
}
LinkedList node;
Tree left;
Tree right;
public Tree(LinkedList node, Tree left, Tree right){
this.node = node;
this.left = left;
this.right = right;
}
public static void main(String[] args) {
LinkedList l3 = new LinkedList(3,null);
Tree node3 = new Tree(l3,null, null);//left child
LinkedList l4 = new LinkedList(4,null);
Tree node4 = new Tree(l4,null, null);//right child
LinkedList l1 = new LinkedList(1,null);
LinkedList l2 = new LinkedList(2, l1);
Tree node1 = new Tree(l2,node3, node4);//node1 be the root of tree
}
}
这里树的每个节点都将保存一个链表。
答案 1 :(得分:0)
LinkedList和Binary搜索树Difference between a LinkedList and a Binary Search Tree之间存在差异。
BST的原则被称为'组合'。例如组成≠继承Difference between Inheritance and Composition。
二进制搜索树只是用于存储的有序二叉树
组成项目。因为它是二进制文件,所以您可以在每个节点中向左或向右移动。因此,每个节点对象应该具有leftNode
和rightNode
作为组合。
这应该让你开始自己做功课。
答案 2 :(得分:-2)
你能看出这是否能回答你的问题?我是从geeksforgeeks.org
的另一个人那里得到的/*
The structure of Link list node is as follows
struct node
{
int data;
struct node* next;
};
The structure of TreeNode is as follows
struct TreeNode
{
int data;
TreeNode *left;
TreeNode *right;
};
*/
TreeNode* newTreeNode(int data)
{
TreeNode *temp = new TreeNode;
temp->data = data;
temp->left = temp->right = NULL;
return temp;
}
/*You are required to complete this method*/
void convert(node *head,TreeNode * &root)
{
queue<TreeNode *> q;
root=newTreeNode(head->data);
head=head->next;
q.push(root);
while(!q.empty()){
TreeNode *tmp=q.front();
q.pop();
if(head){
tmp->left=newTreeNode(head->data);
q.push(tmp->left);
head=head->next;
}
if(head){
tmp->right=newTreeNode(head->data);
q.push(tmp->right);
head=head->next;
}
if(!head)
break;
}
}