遍历一棵树并找到一个节点

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);