美文网首页
树-二叉树

树-二叉树

作者: 思思入扣 | 来源:发表于2020-01-20 16:35 被阅读0次

之前学数据算法的时候对树没有怎么重视,后来刷LeetCode的时候直接懵了,原来树还有这么多操作!



所以赶紧学习一下二叉树


一、二叉树的遍历

言归正传,先贴一张图


1.层次遍历

层次遍历的意思就是从根节点到叶子节点,逐层从左向右遍历,在这颗二叉树中,层次遍历结果就是 1 2 3 4 6 7


好了,正式总结一下:层次遍历的核心思想就是:

废话不多少,直接看图
1.png
具体代码实现:
102. 二叉树的层次遍历
class TreeNode(var `val`: Int) {
     var left: TreeNode? = null
     var right: TreeNode? = null
}

fun levelOrder(root: TreeNode?): List<List<Int>> {
       var result = ArrayList<List<Int>>()
        if (root == null) return result
        var treeNodes = ArrayList<TreeNode>()
        //第一层
        treeNodes.add(root)
        while (treeNodes.size != 0) {
            val integers = ArrayList<Int>()
            //一个临时list存放下一层node
            var treeNodeTmp = ArrayList<TreeNode>()
            for (i in treeNodes.indices) {
                var node = treeNodes[i]
                integers.add(node.`val`)
                if (node.left != null) treeNodeTmp.add(node.left!!)
                if (node.right != null) treeNodeTmp.add(node.right!!)
            }
            //替换临时list
            treeNodes = treeNodeTmp
            result.add(integers)
        }
        return result
    }

2、深度遍历

二叉树的深度遍历有三种:前序遍历(根左右)、中序遍历(左根右)、后序遍历(左右根),其实就是根所在的位置
接上图
(1)前序遍历:1 2 4 3 6 7
(2)中序遍历:4 2 1 6 3 7
(3)后序遍历:4 2 6 7 3 1

二叉树的深度遍历都可以用递归来实现

具体代码
104. 二叉树的最大深度
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
fun maxDepth(root: TreeNode?): Int {
        if(root==null){
            return 0
        }
        //左子树
        var leftMaxDepth=maxDepth(root.left)
        //右子树
        var rightMaxDepth=maxDepth(root.right)

        return Math.max(leftMaxDepth,rightMaxDepth)+1
    }

偷点懒,二叉树的前中后序遍历就不写了,推荐大家去LeetCode上刷题,各种款式,各种类型任君刷

相关文章

  • 数据结构与算法-二叉树02

    二叉树的定义 二叉树的特点 二叉树的五中基本形态 其他二叉树 斜二叉树 满二叉树 完全二叉树图片.png满二叉树一...

  • 树与二叉树

    **树 ** 二叉树 满二叉树 完全二叉树 三种遍历方法 树与二叉树的区别 二叉查找树 平衡二叉树 红黑二叉树

  • 数据结构学习笔记

    1. 树,森林,二叉树之间的转换 树转换为二叉树 森林转为二叉树 二叉树转为树 二叉树转为森林 2. 哈弗曼树

  • 二叉树

    二叉树 高度 深度真二叉树 满二叉树 完全二叉树 二叉树遍历前序 中序 后序层序遍历 翻转二叉树 递归法...

  • Java_二叉树概念及基本操作

    树、森林和二叉树的转换 树转换为二叉树 森林转换为树 二叉树转换为树 二叉树转换为森林 代码

  • 14-树&二叉树&真二叉树&满二叉树

    一、树 二、二叉树 三、真二叉树 四、满二叉树

  • 二叉树 基础操作

    二叉树的使用 二叉树结构 先序创建二叉树 DFS 先序遍历二叉树 中序遍历二叉树 后序遍历二叉树 BFS 层次遍历...

  • 剑指 offer:39、平衡二叉树

    39. 平衡二叉树 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 解题思路: 平衡二叉树:Wiki:在...

  • 四、树与二叉树

    四、树与二叉树 1. 二叉树的顺序存储结构 二叉树的顺序存储就是用数组存储二叉树。二叉树的每个结点在顺序存储中都有...

  • 数据结构-树

    树,二叉树的定义: 二叉树是N个节点的有效集,二叉树与无序数不同,二叉树每个节点只有两个子树。 二叉树的性质: 二...

网友评论

      本文标题:树-二叉树

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