首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    二叉深度和宽度

    1 二叉深度 题目: 输入一个二叉根节点,深度。从根节点到叶子节点依次经过节点(含根、叶节点)形成一条路径,最长路径长度包含节点数为为深度,即二叉树节点层数。...对于任意一棵非空二叉,有如下四种情况: (1)如果一颗只有一个节点,它深度是1; (2)如果根节点只有左子树而没有右子树,那么二叉深度应该是其左子树深度加1; (3)如果根节点只有右子树而没有左子树...,那么二叉深度应该是其右深度加1; (4)如果根节点既有左子树又有右子树,那么二叉深度应该是其左右子树深度较大值加1; 实现代码: int treeDepth(BinaryTreeNode...nLeft+1:nRight+1; } 2 二叉宽度 题目: 给定一颗二叉二叉宽度。 宽度定义: 二叉宽度定义为具有最多结点数层中包含结点数。...[2]二叉深度和宽度

    2.3K20

    【数据结构】C语言实现二叉基本操作——二叉层次遍历、深度结点数……

    在今天内容中我们将会继续介绍二叉一些基本操作如二叉层次遍历、二叉深度二叉结点总数、二叉第K层结点数、二叉叶结点数……以及如何通过C语言来实现这些基本操作。...,因此对结点操作时满足先入先出操作特性,所以我们在实现层序遍历时借助了队列; 在二叉中,二叉遍历是二叉其它操作基础,不管是二叉深度二叉总结点数、二叉第K层结点数、二叉叶结点数...二、二叉深度 二叉深度也就是二叉高度同样也是二叉最大层次。...按照同样思路,现在我们要求二叉深度,实际上就是二叉左子树深度和右子树深度,因此我们根据这种递归思路就可以编写如下代码: //二叉深度——递归 int Depth2(BTN* root...l + 1 : r + 1;//返回左右子树深度最大值+1 } 可以看到当我们在二叉深度时,我们将其拆分成了左子树深度和右子树深度,这种将问题拆分思路是算法中分治思想,目前我们先简单了解一下

    20010

    哈夫曼权值

    本文链接:https://blog.csdn.net/weixin_42449444/article/details/85785671 题目描述: 哈夫曼,第一行输入一个数n,表示叶结点个数。...需要用这些叶结点生成哈夫曼,根据哈夫曼概念,这些结点有权值,即weight,题目需要输出所有结点值与权值乘积之和。 输入描述: 输入有多组数据。...输入样例: 5 1 2 2 5 9 输出样例: 37 相关知识: 给定n个权值作为n个叶子结点,构造一棵二叉,若该带权路径长度达到最小,称这样二叉为最优二叉,也称为哈夫曼(Huffman...哈夫曼是带权路径长度最短,权值较大结点离根较近。 解题思路: 利用优先队列来求解,每次从队列中取出最小值和次小值累加之后再入队,一直算到结点大小为1,即根结点为止。.../取出队列中次最小元素 int min2 = l.top(); l.pop(); //计算最小值和次最小值权值 sum += min1

    1.1K20

    线段 BIT 冒泡排序交换次数

    线段特别适合与区间相关运算,比如MRQ(minimum range query)一段区间内最小值。...BIT可以看作是压缩了线段,由于(某类)线段右节点可以由父结点和左兄弟求出来,所以右结点就不用存了。...冒泡排序交换次数,直观想可以直接在冒泡排序过程中计算交换次数,时间复杂度是O(n^2)。交换次数其实是(位置在j前面,数值还比aj大数)j从0到n求和。...算法特点是反复对某一区间内所有元素求和,可以用BIT来优化。...做法是,i从0到n遍历,在循环某一趟中,dat[ai]表示数字ai之前出现过次数,sum(ai)表示在这一趟之前,小于等于ai数出现次数。

    1.6K80

    二叉搜索最小绝对差!

    利用二叉搜索特性搞事情!...,请你计算中任意两节点绝对值最小值。...示例: 提示:中至少有 2 个节点。 思路 题目中要求在二叉搜索树上任意两节点绝对值最小值。 注意是二叉搜索,二叉搜索可是有序。...遇到在二叉搜索树上什么最值啊,差值之类,就把它想成在一个有序数组上最值,求差值,这样就简单多了。 递归 那么二叉搜索采用中序遍历,其实就是一个有序数组。...在一个有序数组上两个数最小差值,这是不是就是一道送分题了。 最直观想法,就是把二叉搜索转换成有序数组,然后遍历一遍数组,就统计出来最小差值了。

    30810
    领券