返回
数据结构——树结构(二叉树封装)
闲谈
2023-12-28 13:30:33
在昨天我们探讨了二叉搜索树的概念,今天我们深入分析二叉树的封装实现。
定义根属性
一个二叉树的关键属性是根节点 (root
),它代表树的起点。如果根节点为空,则树为空。
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
插入节点
当我们插入一个节点时,我们需要判断根节点是否为空。如果为空,则将新节点作为根节点。否则,我们沿着树遍历,寻找一个合适的插入位置。
def insert(self, val):
if self.root is None:
self.root = TreeNode(val)
else:
_insert(val, self.root)
def _insert(val, node):
if val < node.val:
if node.left is None:
node.left = TreeNode(val)
else:
_insert(val, node.left)
elif val > node.val:
if node.right is None:
node.right = TreeNode(val)
else:
_insert(val, node.right)
else:
print("Value already exists in the tree.")
查找节点
在二叉树中查找一个节点需要递归遍历。我们从根节点开始,将当前节点的值与目标值进行比较。
def find(self, val):
if self.root is None:
return None
return _find(val, self.root)
def _find(val, node):
if node is None:
return None
if val == node.val:
return node
elif val < node.val:
return _find(val, node.left)
else:
return _find(val, node.right)
总结
通过封装二叉树的基本操作,我们可以方便地处理树形数据结构。这些操作包括插入节点、查找节点,以及根据需要添加的其他操作。理解树结构的封装有助于我们深入了解数据结构的基础原理。