
二叉树
JustNow_Man
计算机,努力学习中·ye
展开
-
【leetcode】设计题目总结
【代码】【leetcode】设计题目总结。原创 2022-12-19 23:26:20 · 397 阅读 · 0 评论 -
【二叉树】不同的二叉搜索树
96.不同的二叉搜索树给一个正整数n,存储{1, 2, 3..., n},这些值共有多少种不同的BST结构。// 定义:闭区间[lo, hi]的数字能组成count(lo, hi)种不同的BSTint count(lo, hi);int numTree(int n) { if (lo > hi) return 1; int res = 0; for (int i = lo; i < hi; i++) { // i值作为根节点root int left = count(l原创 2021-08-14 10:58:30 · 95 阅读 · 0 评论 -
【二叉树】完全二叉树的节点数
使用O(logNlogN)算法时间复杂度计算完全二叉树的节点数量;class Solution {public: // 算法时间复杂度为 = 算法递归深度 * 每次递归所花的时间; // = 树的高度(O(logN)) * while循环(O(logN)); // 分解成:满二叉树和完全二叉树的节点数量计算 int countNodes(TreeNode* root) { if (root == nullptr) {原创 2021-08-08 11:05:30 · 129 阅读 · 0 评论 -
【二叉树】最大二叉树
对于构造二叉树的问题,根节点要做的是想办法把自己构造出来(找出maxValue),然后对maxValue左边数组和右边数组进行递归调用,作为root的左右子树。先序遍历来解题/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullpt.原创 2021-08-05 08:27:38 · 256 阅读 · 0 评论 -
【二叉树】递归函数的调试方法
学习lapuladong递归函数需要站在全局的角度去考虑问题,通过打断点的方式看变量很容易把人绕进去建议是在递归函数内部打印关键值,配合缩进,直观的观察递归函数的执行情况在递归函数开头调用PrintIndent(count++)并打印关键变量,在所有return语句之前调用PrintIndent(--count)并打印返回值// 全局变量,记录递归深度int g_indentCount = 0;// 缩进打印函数void PirntIndent(int count){ for (in原创 2021-08-04 09:21:36 · 1463 阅读 · 0 评论 -
【二叉树】二叉树展开为链表
写树的相关算法,简单说就是先搞清楚当前root节点该做什么以及什么时候做,然后根据函数定义递归调用子节点。该做什么:想清楚写代码能实现题目的效果;什么时候做:想清楚这段代码是该写在前序、中序还是后序遍历的代码位置上。解题流程将root的左子树和右子树拉平;将root的右子树接到左子树下方,然后将整个左子树作为右子树;实现/** * Definition for a binary tree node. * struct TreeNode { * int val; * .原创 2021-08-04 08:31:26 · 106 阅读 · 0 评论