编写递归算法,在二叉树中求位于先序序列中第k个位置的结点的值。
时间: 2023-03-20 11:01:43 浏览: 111
以下是递归算法的 Python 代码:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def kth_node_in_preorder(self, root: TreeNode, k: int) -> int:
self.count = 0
self.result = None
self.helper(root, k)
return self.result
def helper(self, node: TreeNode, k: int):
if not node:
return
self.count += 1
if self.count == k:
self.result = node.val
return
self.helper(node.left, k)
self.helper(node.right, k)
```
这个算法使用一个全局变量 `count` 来记录当前遍历到的结点位置,同时使用另一个全局变量 `result` 来记录找到的第 k 个结点的值。递归函数 `helper` 遍历二叉树,每遍历到一个结点,就将 `count` 加 1,如果此时 `count` 等于 k,就将当前结点的值赋给 `result`。如果 `count` 不等于 k,就分别递归遍历当前结点的左子树和右子树。最终返回 `result` 即可。
阅读全文