遍历一棵树并找到一个节点
Traverse a Tree and find a Node
我想像这样遍历一棵树并找到给定的节点。
节点Class:
class Node {
Lion lion;
Node next, child;
public Node(Lion lion) {
this.lion = lion;
next = child = null;
}
}
遍历方法:
// Traverses tree in depth first order
public void traverseTree(Node root) {
if (root == null)
return;
while (root != null) {
System.out.print(root.lion.getName() + " ");
if (root.child != null)
traverseTree(root.child);
root = root.next;
}
}
我的搜索功能:
public Node findNode(Node root,String searchedLionName){
while (root != null) {
//System.out.print(root.lion.getName() + " ");
//System.out.println("Root lion name:" + root.lion.getName() + " Searched lion: "+ lionName);
if(root.lion.getName().equals(searchedLionName)){
System.out.println("found lion name: " +root.lion.getName());
return root;
}
if (root.child != null){
return findNode(root.child,searchedLionName);
}
root = root.next;
}
return new Node(new Lion("debugTEST",-1));
}
为什么我的 findNode 函数不能正常工作,有什么猜测吗?
您的节点 class 可以“指向”另外两个节点(子节点和下一个节点)
此节点位于图表的中心
指向另外三个节点。所以它不能被你的节点 class.
正确表示
你的问题很大!
同时,您可以通过更改
来“修复”您的搜索例程
return findNode(root.child,searchedLionName);
至
findNode(root.child,searchedLionName);
我想像这样遍历一棵树并找到给定的节点。
节点Class:
class Node {
Lion lion;
Node next, child;
public Node(Lion lion) {
this.lion = lion;
next = child = null;
}
}
遍历方法:
// Traverses tree in depth first order
public void traverseTree(Node root) {
if (root == null)
return;
while (root != null) {
System.out.print(root.lion.getName() + " ");
if (root.child != null)
traverseTree(root.child);
root = root.next;
}
}
我的搜索功能:
public Node findNode(Node root,String searchedLionName){
while (root != null) {
//System.out.print(root.lion.getName() + " ");
//System.out.println("Root lion name:" + root.lion.getName() + " Searched lion: "+ lionName);
if(root.lion.getName().equals(searchedLionName)){
System.out.println("found lion name: " +root.lion.getName());
return root;
}
if (root.child != null){
return findNode(root.child,searchedLionName);
}
root = root.next;
}
return new Node(new Lion("debugTEST",-1));
}
为什么我的 findNode 函数不能正常工作,有什么猜测吗?
您的节点 class 可以“指向”另外两个节点(子节点和下一个节点)
此节点位于图表的中心
指向另外三个节点。所以它不能被你的节点 class.
正确表示你的问题很大!
同时,您可以通过更改
来“修复”您的搜索例程return findNode(root.child,searchedLionName);
至
findNode(root.child,searchedLionName);