例如,我有这个节点类:
public class node{
int data
node left; /*For binary Tree*/
node right; /*For binary Tree*/
node next; /*For the linked list*/
public node(int d){
this.data=d;
this.left=null;
this.right=null;
this.next=null;
}
我想为二叉树创建所有节点,然后使用无序遍历序列,最后将信息传递给链表。我有办法为二叉树工作创建所有节点。但是我在 inorder 方法中有这样的东西:
Linkedlist list=new Linkedlist();
public void InOrder(Node r){
if(r!=null){
InOrder(r.left);
list.Addnode(r.data); /*
System.out.println(r.data);
InOrder(r.right);
}
}
我通过 inorder 方法将数据传递给链表。这是对的吗?是否可以将二叉树数据传递给具有相同节点类的链表?P.D:对不起我的英语。
从技术上讲,您可以使其工作:
import java.util.Arrays;
import java.util.LinkedList;
public class Node{
int data;
Node left; /*For binary Tree*/
Node right; /*For binary Tree*/
Node next; /*For the linked list*/
static LinkedList<Integer> list = new LinkedList<>();
public Node(int d){
data=d;
left=null;
right=null;
next=null;
}
public void InOrder(Node r){
if(r!=null){
InOrder(r.left);
list.add(r.data);
InOrder(r.right);
}
}
public static void main(String[] args) {
Node[] nodes = new Node[10];
for(int i=0; i < nodes.length ; i++) {
nodes[i] = new Node(i*10);
if(i>0) {
nodes[i].left = nodes[i-1];
}
}
//sort and add data to linked list
nodes[nodes.length-1].InOrder(nodes[nodes.length-1]);
System.out.println(Arrays.toString(list.toArray()));
}
}
如您所见,结构和调用很奇怪。要创建节点链表,您可以执行以下操作:
import java.util.LinkedList;
public class Tree{
LinkedList<Node> list=new LinkedList<>();
Tree(int numberOfNodes){
if(numberOfNodes >0) {
makeNodes(numberOfNodes);
}
}
private void makeNodes(int numberOfNodes) {
Node[] nodes = new Node[numberOfNodes];
for(int i=0; i < nodes.length ; i++) {
Node newNode = new Node(i*10);
nodes[i] = newNode;
if(i>0) {
newNode.left = nodes[i-1];
nodes[i-1].right = newNode;
}
list.add(newNode);
}
}
public void printNodesData(){
list.stream().forEach(e -> System.out.println(e.data));
}
public static void main(String[] args) {
Tree tree = new Tree(10);
tree.printNodesData();
}
}
class Node{
int data;
Node left; /*For binary Tree*/
Node right; /*For binary Tree*/
Node next; /*For the linked list*/
public Node(int d){
data=d;
left=null;
right=null;
next=null;
}
}