最新 最热

PriorityQueue原理分析——基于源码

在业务场景中,处理一个任务队列,可能需要依照某种优先级顺序,这时,Java中的PriorityQueue(优先队列)便可以派上用场。优先队列的原理与堆排序密不可分,可以参考我之前的一篇博客:...

2022-02-28
0

数据结构与算法-面试

栈是一种线性表,其限制只能在表尾进行插入或删除操作。由于该特性又称为后进先出的线性表。

2022-02-28
0

终于弄懂算法中递归的执行过程

一个递归函数的调用过程类似于多个函数的嵌套的调用,只不过调用函数和被调用函数是同一个函数。为了保证递归函数的正确执行,系统需设立一个工作栈。具体地说,递归调用的内部执行过程如下:...

2022-02-25
0

输出二叉树中值为x的祖先

struct node {int val;node *left, *right;};// 返回值判断二叉树中是否含有x// 含有x并且在子树中 则当前节点是一个祖先// 含有x但是就是当前节点的值 则直接返回到上一层调用bool ancestor(node *root, int x) {if...

2022-02-25
0

二叉树的宽度

算法思想:用一个w维护当前二叉树的宽度,使用层序遍历的方式,每次入队后更新w的值。

2022-02-25
0

平衡二叉树(AVL)C++实现

#include <bits/stdc++.h>using namespace std;class AVL {private: struct node { int val; int height; node *left, *right; node (int x) {...

2022-02-25
0

PAT(甲级)1051.LCA in a Binary Tree(30)

PAT 1051.LCA in a Binary Tree(30) The lowest common ancestor (LCA) of two nodes U and V in a tree is the deepest node that has both U and V as descendants. Gi...

2022-02-25
1

二叉树:统计二叉树同时拥有左右孩子节点的个数

二叉树遍历的应用struct node {int val;node *left, *right;};int dfs(node *root) {if (!root) return 0;if (root->left && root->right) return1;return dfs(root-...

2022-02-24
0

二叉树:二叉树的最大路径和

二叉树的最大路径和,枚举二叉树的每一个节点,通过当前节点最大路径和是, 当前节点左子树的最大路径和+root->val+当前节点右子树的最大路径。

2022-02-24
0

二叉树:二叉树的直径

二叉树直径的定义:二叉树中路径的最大长度 二叉树中路径的最大长度,可以理解所有节点的左右子树高度之和的最大值。假设二叉树有n个节点,编号为{a1,a2,…,an}, 其对应的左右子树的高度之和为H = {h1,h2,h3,…,hn}, 则该...

2022-02-24
0