二叉排序树 二叉排序树:BST: (Binary Sort(Search) Tree), 对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大。 二叉排序树创建和遍历 ? 一个数组创建成对应的二叉排序树,并使用中序遍历二叉排序树 使用中序遍历的二叉树结点 ...
分类:
编程语言 时间:
2020-07-27 09:35:38
阅读次数:
81
329. 矩阵中的最长递增路径 题解: 记忆化搜索,dp[i][j]代表以(i,j)结点为起点的最长递增路径。记忆化搜索即可。 class Solution { public: int dp[1000][1000]; int dir[4][2] = {1,0,0,1,-1,0,0,-1}; int ...
分类:
其他好文 时间:
2020-07-26 19:38:53
阅读次数:
78
#二叉树的前序遍历(递归版本和迭代版本) #递归实现 ####1.王道408c语言(答题)逻辑版本: void preorder(BiTree T){ if (T != NULL){ //判断树是否为空 visit(T); //访问根结点 preorder(T->lchild) //访问左子树 pr ...
分类:
其他好文 时间:
2020-07-26 19:17:13
阅读次数:
69
题目描述: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 代码实现:(暴 ...
分类:
其他好文 时间:
2020-07-26 00:27:50
阅读次数:
60
二分查找(英语:binary search),也叫折半查找(英语:half-interval search),是一种在有序数组中查找特定元素的搜索算法。所以,二分查找的前提是数组必须是有序的。
二分查找只适用顺序存储结构。为保持表的有序性,在顺序结构里插入和删除都必须移动大量的结点。因此,二分查找特... ...
分类:
编程语言 时间:
2020-07-26 00:08:45
阅读次数:
92
1,单链表分为带头结点和不带头结点,带头节点的好处,只有实际写代码后才能体会出来。可以类比顺序表中的哨兵 好处: 1,第1个位置的插入、删除更加方便,带来操作上的统一。 2,对于头插法: 不带头结点的链表,插入第一个结点时,需要特殊处理,删除操作类似. 3,优势2:统一空表和非空表的处理 举例:无头 ...
分类:
其他好文 时间:
2020-07-24 16:29:50
阅读次数:
59
题目链接 #解题思路 将所有的字符串编码看成是一棵trie,因为所有的字符串都不互为前后缀,所以每一个字符串都末尾都位于trie的叶子结点上。 因为要确保总长度最小,所以对于出现次数越多的字符串,其叶子在trie上的深度就越浅,那么出现次数越少的字符显然其叶子深度也就越深。所以可以用出现次数做权值, ...
题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 输出: 二维列表:[[1,2],[4,5]] 思路: 使用两个列表分别存放当前层节点,下一层节点 1 # -*- coding:utf-8 -*- 2 # class TreeNode: 3 # def __init__(s ...
分类:
其他好文 时间:
2020-07-23 23:21:46
阅读次数:
78
三色树 给出一个N个节点的无根树,每条边有非负边权,每个节点有三种颜色:黑,白,灰。一个合法的无根树满足:树中不含有黑色结点或者含有至多一个白色节点。现在希望你通过割掉几条树边,使得形成的若干树合法,并最小化割去树边权值的和。 第一行一个正整数N,表示树的节点个数。第二行N个整数Ai,表示i号节点的 ...
分类:
其他好文 时间:
2020-07-23 23:08:02
阅读次数:
123
用C/C++编写二叉树的前序遍历,中序遍历,后序遍历(递归) 使用辅助队列的层序遍历(非递归) 特别说明一下层次遍历:借助一个队列,先将二叉树根结点入队,然后出队,访问出队结点,若它有左子树,则将左子树根结点入队;若它有右子树,则将右子树树根结点入队。然后出队,访问出队结点.......如此反复,直 ...
分类:
其他好文 时间:
2020-07-23 16:22:22
阅读次数:
66