在二叉树中搜索某个元素
[!Tip]
本节源代码见Github链接🔗
问题描述
在二叉树中搜索某个元素,如果发现树中某个结点的数值与给定的数据相同,则返回true。
核心思路
递归遍历二叉树,比较各个结点的值
实现代码
【👉🏻>>点击展开查看代码】
/**
* 在二叉树中搜索某个元素
*
* @className: FindInBinaryTreeUsingRecursion
* @author: Max Solider
* @date: 2023-06-11 15:37
*/public class FindInBinaryTreeUsingRecursion {
public static BinaryTreeNode findInBinaryTreeUsingRecursion(BinaryTreeNode root, int k) {
if (root == null) {
return null;
}
if (root.getData() == k) {
return root;
}
BinaryTreeNode result = findInBinaryTreeUsingRecursion(root.getLeft(), k);
if (result != null) {
return result;
}
result = findInBinaryTreeUsingRecursion(root.getRight(), k);
if (result != null) {
return result;
}
return null;
}
public static void main(String[] args) {
BinaryTreeNode node4 = new BinaryTreeNode(4, null, null);
BinaryTreeNode node5 = new BinaryTreeNode(5, null, null);
BinaryTreeNode node6 = new BinaryTreeNode(6, null, null);
BinaryTreeNode node7 = new BinaryTreeNode(7, null, null);
BinaryTreeNode node2 = new BinaryTreeNode(2, node4, node5);
BinaryTreeNode node3 = new BinaryTreeNode(3, node6, node7);
BinaryTreeNode node1 = new BinaryTreeNode(1, node2, node3);
System.out.println(findInBinaryTreeUsingRecursion(node1, 10));
System.out.println(findInBinaryTreeUsingRecursion(node1, 5));
}
}
时间复杂度
时间复杂度为O(n)。
空间复杂度
空间复杂度为O(n)。