美文网首页
2018-07-18二叉树的概念和构造

2018-07-18二叉树的概念和构造

作者: 菩灵 | 来源:发表于2018-07-19 21:57 被阅读5次

二叉树

二叉树的基本概念

二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)

二叉树的性质(特性)

性质1: 在二叉树的第i层上至多有2^(i-1)个结点(i>0)
性质2: 深度为k的二叉树至多有2^k - 1个结点(k>0)
性质3: 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1;
性质4:具有n个结点的完全二叉树的深度必为 log2(n+1)
性质5:对完全二叉树,若从上至下、从左至右编号,则编号为i 的结点,其左孩子编号必为2i,其右孩子编号必为2i+1;其双亲的编号必为i/2(i=1 时为根,除外)

(1)完全二叉树——若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。


完全二叉树

(2)满二叉树——除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。


满二叉树

二叉树广度优先遍历

广度优先可以用队列方式实现
广度优先遍历也称层次遍历

*列表中只要有元素,就代表是真的


列表中None的真假判断

构建节点和二叉树代码实现:

# coding:utf-8


class Node(object):
    def __init__(self, item):
        self.item = item
        self.lchild = None
        self.rchild = None

class Tree(object):
    """二叉树"""
    def __init__(self, item=None):
        self.root = item

    def add(self, item):
        node = Node(item)
        if self.root is None:
            self.root = node
        else:
            queue = [self.root]
            while queue:
                cur_node = queue.pop(0)
                if cur_node.lchild is None:
                    cur_node.lchild = node
                    return
                else:
                    queue.append(cur_node.lchild)
                if cur_node.rchild is None:
                    cur_node.rchild = node
                else:
                    queue.append(cur_node.rchild)

if __name__ == "__main__":
    tree = Tree()
    tree.add(5)
    print(tree)

在这个代码中,当tree = Tree()创建的时候,如果不传入参数,就进入到了else,把node给了root,cur就能够到lchild和rchild,如果传入参数,也需要传入一个具有Node类属性的实例,这样cur仍然能够到那两个属性。

相关文章

  • 2018-07-18二叉树的概念和构造

    二叉树 二叉树的基本概念 二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtre...

  • 从零开始学数据结构和算法(七) huffman 树与 AVL 树

    Huffman 树 概念 树的构造 Huffman 源码 AVL 树(平衡二叉树) 概念 平衡因子 二叉树上节点的...

  • 三个树构造算法

    已知先序和后序构造正则二叉树 已知先序和中序构造二叉树 已知中序和后序构造二叉树

  • 构造二叉树

    构造二叉树 01 前序和中序遍历 构造二叉树 https://leetcode-cn.com/problems/c...

  • 889. 根据前序和后序遍历构造二叉树

    889. 根据前序和后序遍历构造二叉树

  • 最优二叉树

    基本概念 给定n个权值作为n的[叶子]结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也...

  • 二叉树 -- 霍夫曼树

    一、概念 给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为...

  • 二叉树链式存储

    一、二叉树构造 二、二叉树基本操作 1、打印数据 2、构造空二叉树T 销毁二叉树初始条件: 二叉树T存在。操作结果...

  • AVL树(平衡二叉树)

    概念 平衡因子二叉树上节点的左子树深度减去右子树深度的值称为平衡因子BF(Balance Factor) 构造 左...

  • 数据结构之二叉树

    数据结构之二叉树 递归构造二叉树 二叉树节点: 递归构造: 图示: 递归遍历 递归实现先序遍历 图示: 递归实现中...

网友评论

      本文标题:2018-07-18二叉树的概念和构造

      本文链接:https://www.haomeiwen.com/subject/oblapftx.html