编写代码以{a,b,c,d,e,f,g,h,i}为元素构造一棵二叉树,并输出它的 (1)先序遍历; (2)中序遍历; (3)后序遍历; (4)层次遍历;非递归(队列) (5)该二叉树的高度; (6)该二叉树节点的个数

首先,我们需要定义二叉树的节点类型,一般来说,每个节点至少包含以下信息:

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

然后,我们可以用这些节点来构建二叉树,例如:

# 构建二叉树
root = Node('a')
root.left = Node('b')
root.right = Node('c')
root.left.left = Node('d')
root.left.right = Node('e')
root.right.left = Node('f')
root.right.right = Node('g')
root.left.left.left = Node('h')
root.left.left.right = Node('i')

现在,我们已经构建好了二叉树,就可以开始遍历了。

(1) 先序遍历

先序遍历顺序是:根节点 -> 左子树 -> 右子树。

可以使用递归或者非递归(使用栈)的方式进行遍历。

递归代码如下:

def preorder_traverse(node):
    if node:
        print(node.data)
        preorder_traverse(node.left)
        preorder_traverse(node.right)

# 调用
preorder_traverse(root)

非递归代码如下:

def preorder_traverse(node):
    stack = []
    while node or stack:
        while node:
            print(node.data)
            stack.append(node)
            node = node.left
        node = stack.pop()
        node = node.right

# 调用
preorder_traverse(root)

(2) 中序遍历

中序遍历顺序是:左子树 -> 根节点 -> 右子树。

可以使用递归或者非递归(使用栈)的方式进行遍历。

递归代

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值