Javaでツリーのサブノードを再帰的に検索する方法

Javaで再帰を使用してツリーの子ノードを検索する手順は次のとおりです。

  1. ノード値と左右の子ノードへの参照を含むツリーノードクラスを定義する。
class TreeNode {
    int value;
    TreeNode left;
    TreeNode right;

    TreeNode(int value) {
        this.value = value;
    }
}
  1. 再帰メソッドを定義し、現在のノードとターゲット値を渡す。
public TreeNode findChildNode(TreeNode node, int targetValue) {
    // 如果当前节点为空,返回空值
    if (node == null) {
        return null;
    }
    
    // 如果当前节点的值等于目标值,返回当前节点
    if (node.value == targetValue) {
        return node;
    }
    
    // 递归搜索左子树
    TreeNode leftResult = findChildNode(node.left, targetValue);
    
    // 如果左子树找到了目标节点,返回结果
    if (leftResult != null) {
        return leftResult;
    }
    
    // 递归搜索右子树
    return findChildNode(node.right, targetValue);
}
  1. 子ノードを検索するときにメソッドを呼び出します。
// 创建树节点
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.right.right = new TreeNode(5);

// 查找节点值为4的子节点
TreeNode result = findChildNode(root, 4);

// 输出结果
if (result != null) {
    System.out.println("找到了子节点:" + result.value);
} else {
    System.out.println("未找到子节点");
}

再帰的に木のサブノードを見つける簡単な例を次に示します。

bannerAds