构造二叉树并查找
时间: 2023-07-11 11:04:08 浏览: 84
二叉树的查找
构造二叉树是指根据给定的节点值和节点之间的关系,建立一棵满足条件的二叉树。而查找二叉树则是指在已经建好的二叉树中查找指定的节点。
构造二叉树的过程可以通过递归实现。具体地,对于给定的节点,先将其作为根节点创建一个新的二叉树,然后递归地构造其左右子树。递归的终止条件是到达叶子节点或者节点为 null。
下面是一个示例代码,其中 nodes 是给定的节点列表,每个节点包含了它的值、左子节点和右子节点:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def buildTree(nodes):
if not nodes:
return None
root = TreeNode(nodes[0])
if len(nodes) > 1 and nodes[1]:
root.left = buildTree(nodes[1])
if len(nodes) > 2 and nodes[2]:
root.right = buildTree(nodes[2])
return root
```
对于查找二叉树,也称为二叉搜索树,它满足左子树所有节点的值均小于根节点的值,右子树所有节点的值均大于根节点的值。因此,我们可以利用这个性质在二叉树中进行快速查找。
下面是一个示例代码,其中 root 是给定的二叉搜索树的根节点,target 是要查找的节点值:
```python
def searchBST(root, target):
if not root or root.val == target:
return root
if root.val > target:
return searchBST(root.left, target)
else:
return searchBST(root.right, target)
```
这个函数会在二叉搜索树中递归查找目标节点。如果当前节点为空或者节点值等于目标值,则返回该节点;否则,如果节点值大于目标值,则递归查找左子树;如果节点值小于目标值,则递归查找右子树。
阅读全文