二叉排序树的非递归建立
时间: 2023-11-22 08:44:05 浏览: 106
二叉树的几种操作,包括递归先序建立二叉树、先序遍历、中序遍历、后序遍历、非递归的各种遍历
二叉排序树的非递归建立可以使用栈来实现。具体步骤如下:
1. 创建一个空树,将第一个节点作为根节点。
2. 从第二个节点开始,依次将节点插入到树中。
3. 对于每个待插入的节点,从根节点开始遍历树,如果该节点的值小于当前节点的值,则继续遍历当前节点的左子树;如果该节点的值大于当前节点的值,则继续遍历当前节点的右子树。
4. 找到待插入节点应该插入的位置后,将其插入到该位置,并将其父节点入栈。
5. 重复步骤3和4,直到所有节点都被插入到树中。
以下是具体实现代码:
```python
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def build_bst(nums):
if not nums:
return None
root = TreeNode(nums[0])
stack = [root]
for num in nums[1:]:
node = TreeNode(num)
parent = None
while stack:
if num < stack[-1].val:
parent = stack[-1]
stack.pop()
else:
break
if parent:
parent.left = node
else:
stack[-1].right = node
stack.append(node)
return root
```
阅读全文