题目: 解法: 方法:递归 算法: 从问题的描述中,可以清楚地了解到,我们需要在给定树的每个结点处找到其坡度,并将所有的坡度相加以获得最终结果。要找出任意结点的坡度,我们需要求出该结点的左子树上所有结点和以及其右子树上全部结点和的差值。 因此,为了找出解决方案,我们使用递归函数 traverse,在 ...
分类:
其他好文 时间:
2020-05-03 14:53:40
阅读次数:
61
题目: 解法: 解题思路中序遍历,使用一个全局遍量记录最大深度,当到达的深度大于目前的最大深度时,为第一次到达该最大深度,更新结果,不超过该深度时,均不会更新。 复杂度时间复杂度:每个结点访问一次,O(n)O(n)空间复杂度:不计算调栈,O(1)O(1);计算调栈O(h)O(h),h为最大深度 1 ...
分类:
其他好文 时间:
2020-05-03 14:41:18
阅读次数:
53
判断一个图是否构成树 问题 给定一个无向图,判断该图是否构成树。 输入 输入有若干测试样例。第一行是测试样例个数,接下来若干测试样例。 每个测试样例的第一行是结点数n,而且结点用1,2,…, n编号。 第二行是边数m,接下来是 m个结点对。 输出 如果一个图是树,则打印“YES",否则打印"NO"。 ...
分类:
其他好文 时间:
2020-05-03 14:40:18
阅读次数:
50
逻辑上通常可以将数据结构分为(线性结构和非线性结构) 如果在数据结构中每个数据元素只可能有一个直接前驱,但可以有多个直接后继,则该结构是(树) 在长度为n的顺序表的第i个位置上插入一个元素(1≤i≤n+1),元素的移动次数为:n-i+1 在非空线性链表中由p所指结点的后面插入一个由q所指的结点,应依 ...
分类:
其他好文 时间:
2020-05-03 11:06:29
阅读次数:
146
单链表 创建单链表的过程是一个动态生成表的过程,从“空表”的初始转态起,依次建立各元素结点,并逐个插入链表 单链表的创建分为“头插法”和“尾插法” 头插法:把新加进的元素放在表头(头结点)后的第一个位置 尾插法:新加进的元素放在表中最后一个位置 单链表的正表删除 声明结点 p,q 将第一个结点(不算 ...
分类:
其他好文 时间:
2020-05-03 00:58:10
阅读次数:
63
循环链表 单链表的局限性:如果不从头结点出发,就无法访问的全部节点。 循环链表定义:将单链表终端结点的指针由空指针改为指向头结点;使单链表形成一个环,称单循环链表,简称循环链表 注:循环链表不一定有头结点。 ...
分类:
其他好文 时间:
2020-05-03 00:42:24
阅读次数:
58
堆树介绍: 之前在二叉树的时候说到过一种特殊的二叉树 完全二叉树(除了最后一层,其他层的每个结点都是满的,且最后一层结点全部靠左排列,这样就可以很方便的用数组来表示,下标从0开始如果父结点索引是i那么它两个子结点的索引就是2i+1和2i+2,具体的图解见二叉树)。而堆树又是一种特殊的完全二叉树。它的 ...
分类:
编程语言 时间:
2020-05-03 00:35:02
阅读次数:
145
typedef struct LinkNode{ //链式队列结点 int data; struct LinkNode *next; }LinkNode; typedef struct{ //链式队列 LinkNode *front,*rear; //队列头指针和尾指针 }LinkQueue; vo ...
分类:
其他好文 时间:
2020-05-02 22:44:19
阅读次数:
51
平衡树——AVL算法 平衡树建立在二叉搜索树的基础上,加入了两侧子树大小相对平衡的特性而避免了很多情况下的算法退化。这里AVL算法实现的AVL树就是平衡树的一种。 1.二叉搜索树 在说平衡树之前我们得先复习一下二叉搜索树BST的定义: 一棵二叉树为二叉搜索树当且仅当它是一颗空树或者同时满足下列条件 ...
分类:
编程语言 时间:
2020-05-02 20:57:13
阅读次数:
58
二叉排序树 二叉排序树是为了实现数据的有序排列,并可方便的对树中的数据进行插入和删除操作,提高查找效率。 性质: 若它的左子树不为空,则左子树上的所有值均小于根结点的值 若它的右子树不为空,则右子树上的所有值均大于根结点的值 它的左右子树也分别为二叉排序树 下面说说二叉排序树的查找,插入,删除操作实 ...
分类:
编程语言 时间:
2020-05-02 18:31:34
阅读次数:
55