二叉树的创建(python)

 说明

1、构造器,定义一个构造器,用来构造树。

2、向树中添加数据。

如图我们定义了这样一颗二叉树,我们用代码来创建它

二叉树

用代码实现,代码如下:

#coding=utf-8

class TreeNode(object):
    def __init__(self,data=None,left=None,right=None):
        self.data = data
        self.left = left
        self.right = right

    # 这一步是在每次调用某个结点时,自动调用.data的方法
    def __str__(self):
        return str(self.data)

# 方法一
A, B, C, D, E, F, G, H, I = [TreeNode(x) for x in 'ABCDEFGHI']
A.left, A.right = B, C
B.right = D
C.left, C.right = E, F
E.left = G
F.left,F.right = H, I
print C.right

# 方法二
A = TreeNode('A','B','C')
B = TreeNode('B',None,'D')
C = TreeNode('C','E','F')
E = TreeNode('E','G',None)
F = TreeNode('F','H','I')
print C.right

 

  • 10
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
二叉树遍历有三种常见的方式:前序遍历、中序遍历和后序遍历。以下是使用Python实现这三种遍历方式的示例代码: ```python # 定义二叉树节点类 class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right # 前序遍历 def preorderTraversal(root): if root is None: return [] stack = [root] result = [] while stack: node = stack.pop() result.append(node.val) if node.right: stack.append(node.right) if node.left: stack.append(node.left) return result # 中序遍历 def inorderTraversal(root): if root is None: return [] stack = [] result = [] curr = root while curr or stack: while curr: stack.append(curr) curr = curr.left curr = stack.pop() result.append(curr.val) curr = curr.right return result # 后序遍历 def postorderTraversal(root): if root is None: return [] stack = [root] result = [] while stack: node = stack.pop() result.append(node.val) if node.left: stack.append(node.left) if node.right: stack.append(node.right) return result[::-1] # 创建一个二叉树示例 root = TreeNode(1) root.right = TreeNode(2) root.right.left = TreeNode(3) print("前序遍历结果:", preorderTraversal(root)) print("中序遍历结果:", inorderTraversal(root)) print("后序遍历结果:", postorderTraversal(root)) ``` 该示例中,我们定义了一个`TreeNode`类来表示二叉树节点,然后实现了前序遍历、中序遍历和后序遍历的函数。通过创建一个二叉树示例,并调用这些函数,可以获得对应的遍历结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值