python使用递归的方式建立二叉树

本文详述了如何用Python递归方法构建二叉树,并展示了二叉树的前序、中序、后序及层次遍历的实现,通过实例代码帮助读者理解和学习二叉树数据结构。
摘要由CSDN通过智能技术生成

这篇文章主要介绍了python使用递归的方式建立二叉树,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
树和图的数据结构,就很有意思啦。
在这里插入图片描述

# coding = utf-8
 
  
 
  
 
class BinaryTree:
 
  def __init__(self, root_obj):
 
    self.key = root_obj
 
    self.left_child = None
 
    self.right_child = None
 
  
 
  def insert_left(self, new_node):
 
    node = BinaryTree(new_node)
 
    if self.left_child is None:
 
      self.left_child = node
 
    else:
 
      node.left_child = self.left_child
 
      self.left_child = node
 
  
 
  def insert_right(self, new_node):
 
    node = BinaryTree(new_node)
 
    if self.right_child is None:
 
      self.right_child = node
 
    else:
 
      node.right_child = self.right_child
 
      self.right_child = node
 
  
 
  def get_right_child(self):
 
    return self.right_child
 
  
 
  def get_left_child(self):
 
    return self.left_child
 
  
 
  def set_root_val(self, obj):
 
    self.key = obj
 
  
 
  def get_root_val(self):
 
    return self.key
 
  
 
  
 
root = BinaryTree('a')
 
print(root.get_root_val())
 
print(root.get_left_child())
 
root.insert_left('b')
 
print(root.get_left_child())
 
print(root.get_left_child().get_root_val())
 
root.insert_right('c')
 
print(root.get_right_child())
 
print(root.get_right_child().get_root_val())
 
root.get_right_child().set_root_val('hello')
 
print(root.get_right_child().get_root_val())
C:\Users\Sahara\.virtualenvs\test\Scripts\python.exe C:/Users/Sahara/PycharmProjects/test/python_search.py
 
a
 
None
 
<__main__.BinaryTree object at 0x00000000024139B0>
 
b
 
<__main__.BinaryTree object at 0x00000000024139E8>
 
c
 
hello
 
  
 
Process finished with exit code 0

Python实现二叉树遍历的递归和非递归算法

前序遍历

# -----------前序遍历 ------------
 # 递归算法
 def pre_order_recursive(self, T):
   if T == None:
     return
   print(T.root, end=' ')
   self.p
二叉树是一种常见的数据结构,它由节点、左子树和右子树组成。其中每个节点包含一个值和两个指针,分别指向其左子树和右子树。 在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 preorderTraversal(self, root: TreeNode) -> List[int]: """ 前序遍历 """ res = [] def helper(node): if not node: return res.append(node.val) helper(node.left) helper(node.right) helper(root) return res def inorderTraversal(self, root: TreeNode) -> List[int]: """ 中序遍历 """ res = [] def helper(node): if not node: return helper(node.left) res.append(node.val) helper(node.right) helper(root) return res def postorderTraversal(self, root: TreeNode) -> List[int]: """ 后序遍历 """ res = [] def helper(node): if not node: return helper(node.left) helper(node.right) res.append(node.val) helper(root) return res ``` 在上面的代码中,我们定义了一个`TreeNode`类来表示二叉树节点,其中包含一个值`val`,以及左右子树的指针`left`和`right`。 然后,我们定义了一个`Solution`类,其中包含了三个方法`preorderTraversal`、`inorderTraversal`和`postorderTraversal`,分别用于实现二叉树的前序遍历、中序遍历和后序遍历。 在每个方法中,我们使用递归来遍历二叉树。具体地,我们定义了一个辅助函数`helper`,它接受一个节点作为参数,然后按照遍历顺序执行相应的操作(前序遍历先访问根节点,中序遍历中间访问根节点,后序遍历最后访问根节点)。 最后,我们在每个方法中调用`helper`函数,并返回遍历结果。 以上就是使用递归实现二叉树遍历的Python代码示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值