二叉树性质、创建、遍历

二叉树的性质:

在这里插入图片描述

  • [题解1]:
    对于任意一个满二叉树,其分支数B=2(no-1),其中no为终端节点数。
    在这里插入图片描述
    在这里插入图片描述
  • [题解2]:
    已知一棵度为m的树中有n1个度为1的节点、n2个度为2的节点…n_m个 度为m的节点,问该树中共有多少个叶子节点?
    在这里插入图片描述

二叉树链式储存的分类:

在这里插入图片描述

图解:
在这里插入图片描述

二叉树的遍历:

递归算法实现:

先序遍历:

def preOrder(root):
    if root is None:
        return
    print(root.val)
    preOrder(root.left)
    preOrder(root.right)

中序遍历:

def midOrder(root):
    if root is None:
        return
    midOrder(root.left)
    print(root.val)
    midOrder(root.right)

后序遍历:

def postOrder(root):
    if root is None:
        return
    postOrder(root.left)
    postOrder(root.right)
    print(root.val)

非递归实现:

先序遍历:

from queue import deque


def preOrder(root):
    if root is None:
        return None
    q = deque()
    q.append(root)
    while q:
        temp = q.pop()
        print(temp.val)
        if temp.right is not None:
            q.append(temp.right)
        if temp.left is not None:
            q.append(temp.left)

中序遍历:

from queue import deque


def midOrder(root):
    if root is None:
        return None
    q = deque()
    q.append(root)
    while q:
        temp = q[-1]
        while temp.left is not None:
            q.append(temp.left)
            temp = q[-1]
        temp = q.pop()
        print(temp.val)
        while (temp.right is None) and q:  # 一直找到右边不是空的为止,可能不存在右边不为空的
            if q:
                temp = q.pop()
                print(temp.val)
        # 出来了可能右边不为空,也可能q为空,但是q为空且temp.right不为空一样可以进栈
        if temp.right is not None:
            q.append(temp.right)

后序遍历:


层次遍历:

from queue import Queue


def layerOrder(root):
    q = Queue()
    q.put(root)
    while not q.empty():
        temp = q.get()
        print(temp.val)
        if temp.left is not None:
            q.put(temp.left)
        if temp.right is not None:
            q.put(temp.right)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值