![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树和二叉树
KRYON!
这个作者很懒,什么都没留下…
展开
-
[leetcode]5354. 通知所有员工所需的时间
找到底层员工往上算class Solution {public: int numOfMinutes(int n, int headID, vector<int>& manager, vector<int>& informTime) { int res = 0; for(int i = 0; i <...原创 2020-03-08 18:44:54 · 111 阅读 · 0 评论 -
[leetcode]1367. 二叉树中的列表
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; *//** * Definition for a binary tree n...原创 2020-03-02 22:18:49 · 315 阅读 · 0 评论 -
[leetcode]102. 二叉树的层次遍历
BFS/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */...原创 2020-02-06 21:56:58 · 89 阅读 · 0 评论 -
[leetcode] 95. 不同的二叉搜索树 II
开始的想法是全排列数字1~n作为输入,然后构造BST,但是,不行,有重复。下面代码是leetcode官方题解的C++版本https://leetcode-cn.com/problems/unique-binary-search-trees-ii/solution/bu-tong-de-er-cha-sou-suo-shu-ii-by-leetcode//** * Definition f...原创 2020-02-05 17:34:53 · 121 阅读 · 0 评论 -
[leetcode] 96. 不同的二叉搜索树 +[补充] 不同的二叉树,不同形态的二叉树的个数----catalan数
leetcode官方的题解:https://leetcode-cn.com/problems/unique-binary-search-trees/solution/bu-tong-de-er-cha-sou-suo-shu-by-leetcode/(写的真好)class Solution {public: int numTrees(int n) { if(n ...原创 2020-02-05 13:23:07 · 333 阅读 · 0 评论 -
线索二叉树
定义:https://zh.wikipedia.org/wiki/%E7%BA%BF%E7%B4%A2%E4%BA%8C%E5%8F%89%E6%A0%91线索二叉树(引线二叉树) 的定义如下:“一个二叉树通过如下的方法“穿起来”:所有原本为空的右(孩子)指针改为指向该节点在中序序列中的后继,所有原本为空的左(孩子)指针改为指向该节点的中序序列的前驱。”[1]线索二叉树能线性地遍历二叉树,...原创 2019-10-26 21:03:04 · 767 阅读 · 0 评论 -
树的表示(1)--双亲表示法
#include<iostream>using namespace std;const int maxSize = 30;struct Node{ char data; //数据 int parent; //双亲指针 };struct PTree{ Node tNode[maxSize]; int n; };int getFirstChild(PT...原创 2019-10-25 19:21:31 · 413 阅读 · 0 评论 -
由二叉树的先序序列和中序序列构建二叉树
构造思想:假设当前处理先序序列pre的处理区间是[a,b],中序序列in处理的区间是[c,d]。例如: string pre = "123456789"; string in = "325416879";pre的处理区间是[0,8],中序序列in处理的区间是[0,8]若a<b,则以pre[a]建立二叉树的根结点,然后搜索in[c,d],找到in[i] == pre[a]的位置i...原创 2019-10-20 16:38:42 · 3980 阅读 · 0 评论 -
二叉查找树--插入、查找、遍历、打印、删除(重点)
查找二叉树:一、定义维基百科:https://zh.wikipedia.org/wiki/%E4%BA%8C%E5%85%83%E6%90%9C%E5%B0%8B%E6%A8%B9二、代码:1、结构体:struct Node{ int value; Node *lchild,*rchild; Node(int _value) { value = _value; lc...原创 2019-11-04 18:11:41 · 658 阅读 · 0 评论 -
由一维数组创建小根堆
1、结构体和头文件:#include<iostream>#include<vector>using namespace std;struct MinHeap{ vector<int> elem; int heapSize; MinHeap(vector<int> _elem) { elem.insert(elem.begin...原创 2019-11-02 12:24:53 · 1629 阅读 · 0 评论 -
判断是否是完全二叉树和是否为满二叉树
struct Node{ char data; Node *lchild,*rchild; Node(char _data) { data = _data; }};是否为完全二叉树:bool isCompleteBinaryTree(Node *root){ if(root == NULL) { return true; } queue<Node*>...原创 2019-11-01 20:07:18 · 388 阅读 · 0 评论 -
顺序表示二叉树转链表表示
#include<iostream>#include<string>#include<vector>using namespace std;struct Node{ char data; Node *lchild,*rchild; Node(char _data) { data = _data; }};void createTr...原创 2019-11-01 18:59:26 · 507 阅读 · 0 评论 -
最优判定树C/C++实现(二叉链表实现)
1、最优判定树定义:百度和维基上也没找到定义,可能是这本书独有的,字太多了,我就直接拍图片了。给定这张表:如果利用huffman算法(每次找最小的两个结点去构造一个新结点)去生成一颗判定树的话,判定树应该是下图,这并不是最优的最优的是下图:这颗判定树的比较次要比上面的少而实现这颗判定树的算法是Hu-Tucker算法...原创 2019-11-01 18:22:08 · 914 阅读 · 1 评论 -
huffman树--静态链表和链表实现(借助优先队列)
静态链表实现:#include<iostream>#include<vector>#include<string> using namespace std;const int maxWeight = 32767;struct HTNode{ char data; int weight; int parent,lchild,rchild;...原创 2019-11-01 10:28:42 · 877 阅读 · 0 评论 -
输入广义表建立子女兄弟链表示的树
全部代码:#include<iostream>#include<string> #include<vector>#include<stack>#include<queue> using namespace std;struct Node{ char data; struct Node* lchild, *rsib...原创 2019-10-29 21:07:51 · 311 阅读 · 0 评论 -
输入广义表建立双亲表示的树and给定双亲表示的树输出广义表表示的树
注释写的很详细了,就直接上代码吧。#include<iostream>#include<string>#include<stack>#include<vector> using namespace std;struct Node{ char data; //数据 int parent; //双亲指针 };void ...原创 2019-10-29 21:02:05 · 276 阅读 · 0 评论 -
树的表示(2)--子女兄弟表示法
头结点:struct Node{ char data; struct Node* lchild, *rsibling;};1、建树:通过给定树的层次序列所有元素以及对应结点的度来构造树。例如这样一课树:R A D E B C F G ...原创 2019-10-28 21:00:31 · 521 阅读 · 0 评论 -
AVL树---最简单的实现
一、定义:我们知道二叉查找树,有很强的排序、查找、删除、插入的能力,但是,随着插入和删除的次数变多,二叉查找树的工作的效率有可能的变得没那么好了,因为二叉查找树的工作效率依赖于树的高度,树越高效率越差(同样多的结点的情况下),因此,就需要尽可能地降低树的高度。引入AVL树的目的就是为了提高二叉查找树的效率,在每次向二叉树插入或删除结点的时候,尽可能地使二叉查找树保持平衡,平衡状态下树的高度是最低...原创 2019-11-06 21:41:40 · 289 阅读 · 0 评论