青铜挑战-理解树的结构

1.树的常见概念

树是一个有n个有限节点构成的具有层次关系的集合,每一个节点有0个或者多个子节点,每一个节点仅有一个父节点(没有父节点的节点称之为根节点)

2.树的常见类型

平衡二叉树:任何一个节点的左右节点高度差不大于1

搜索二叉树:任何一个节点的大于左节点并小于右节点

满二叉树:二叉树内只有度为0和度为2的节点,并且度为0的节点在同一层

完全二叉树:除了最后一层以外,每层的节点的度都为2,并且最后一层的元素都集中在左侧区域

3.树的定义

节点内两个指针分别指向该节点的左孩子和右孩子

链表存储

 public class TreeNode {
        int val;
        TreeNode leftNode;
        TreeNode rightNode;

        public TreeNode(int val) {
            this.val = val;
            leftNode = null;
            rightNode = null;
        }
    }

数组存储

如果父节点的下标为 i ,则 它的左孩子下标为 2i+1 ,它的右孩子下标为 2i+2

如果不是一个满二叉树或者完全二叉树,用数组存储节点会造成很大的空间浪费(不推荐) 

4.树的遍历方式

广度有限遍历:即层次遍历,遍历完一层再遍历第二层

深度优先遍历:先往深度走,遇到叶子节点再返回(前,中,后序遍历

 5.通过序列构造二叉树

两种方式:通过前序或者后序确定根节点,在中序通过根节点位置划分出左右子树,以此类推

前序 + 中序 构造二叉树

后序 + 中序 构造二叉树

6.构建二叉树(java代码)

未解决中......

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值