• 数据结构之二叉树


    二叉树定义:
    	每个节点最多含有两个子树的树称为二叉树,通常子树被称作“左子树(left subtree)”和“右子树(right subtree)”,有左右之分,次序不能颠倒;
    
    二叉树分类:     
    	1.完全二叉树:对于一棵二叉树,假设其深度为d(d>1)。除了第d层外,其它各层的节点数目均已达最大值,且第d层所有节点从左向右连续地紧密排列,这样的二叉树被称为完全二叉树;
        2.满二叉树:对于上述的完全二叉树,如果去掉其第d层的所有节点,那么剩下的部分就构成一个满二叉树(此时该满二叉树的深度为d-1);
    
    二叉树存储:
    	连续存储(以完全二叉树存储)
    		二叉树可以用数组或线性表来存储。如果一个节点的索引为i,它的子节点能在索引2i+1和2i+2找到,并且它的父节点能在floor((i-1)/2)找到(根节点索引为0)。
    
    Tree
    
    	链式存储
    
    /**
     * 二叉树链式存储的数据结构
     */
    public class BinNode {
        /*节点数据*/
        private Object data;
        /*左子节点引用*/
        private Node leftNode;
        /*右子节点引用*/
        private Node rightNode;
    
        public BinNode(Object data, Node leftNode, Node rightNode) {
            this.data = data;
            this.leftNode = leftNode;
            this.rightNode = rightNode;
        }
    }
    
    
    二叉树的访问: 树的遍历先序(DLR)、中序(LDR)、后序(LRD)。 Tree3 先序遍历: 1、访问根节点; 2、再先序访问左子树; 3、再先序访问右子树; 遍历结果为:1 2 4 8 5 3 6 7 中序遍历: 1、访问左子树; 2、访问根节点; 3、访问右子树; 遍历结果为:8 4 2 5 1 3 6 7 后序遍历: 1、访问右子树; 2、访问左子树; 3、访问根节点; 遍历结果为:8 4 5 2 6 7 3 1 已知先序和中序,或者已知中序和后序即可还原原始二叉树: 例如通过先序和中序求原始二叉树的思路如下: 1、先序先访问根节点,通过先序序列可以得出1为树的根; 2、中序先访问左子树,通过中序序列可以得出8 4 2 5 为根左子树的子孙,3 6 7 为根右子树的子孙; 3、左子树8 4 2 5这4个子孙中,子孙2在先序序列中最靠前,可以得出2为左子树的根; 4、以此类推。 将n叉树转换为二叉树: 将每个节点的左子节点指向他的第一个孩子节点,右子节点指向他的下一个兄弟节点。 Nary to binary tree conversion
  • 相关阅读:
    网络编程
    WPF DataGrid点击有效区域Check
    WPF DataGrid显示表格中编辑Check数据
    WPF DataGrid显示按上下键移动数据、多个CheckBox勾选
    Python 下载小说到本地
    WPF 条件不等于时触发改变颜色
    WPF 反射 排序 、启动定时器等
    # WPF DataGrid文本编辑验证
    Nginx 与 X-Forwarded-For
    如何正确设置nginx中remote_addr和x_forwarded_for参数
  • 原文地址:https://www.cnblogs.com/zengxianxi/p/3623174.html
Copyright © 2020-2023  润新知