二叉树感悟

  1. 考虑: 容器、dfs? Bfs?--- 多用在图上, 返回值类型
  2. 递归出口: 根结点为空 或者 二分法的左右两端
  3. 以递归到叶结点开始看递归函数的进行, 输入值, 返回值, 全局变量, 画图看看是在哪改变, 什么改变
  4. 如果需要不断比较大小, 且大小在变化或者跟所求情况有关要分情况的或者是二分法构造节点的左右子树, 是指都是跟节点有关, 节点变, 这些情况跟着变因此要重新设立新的内部类, 来方便使用
  5. 学会构造节点类来计数, 因为不能用map 计数不方便吗:

public class MyNode {

TreeNode node;

int start;

int end;

public MyNode(TreeNode node, int start, int end) {

this.node = node;

this.start = start;

 this.end = end;

}

}  

    

  

时间: 2024-10-20 10:15:06

二叉树感悟的相关文章

dfs 感悟

感悟: 1. 什么时候用排列组合问题? 看看结果有ArrayList? 所求的容器有多个结果值-且各个结果值之间只是顺序,或长度不同,但是来源(存在有显性隐性输入值)都是一样的-- 正是排列组合的根本. 数组, 字符串 2. 关键点: 递归函数里面加入容器, 结果值--操作的元素---不断地操作结果中的值, 输入值, (判断访问过没有-看是否要求重复.位置计数器). 3. 二叉树的回溯法有单独的模板 5.10 4. //元素没有重复 if (list.contains(nums[i])) { c

专题总结-二叉树

 需要记忆的部分: 对于二叉树问题,首先需要熟练记住二叉树的前序中序遍历的递归版本和迭代版本,后序也可以看一下,记住BFS的实现过程,归并排序,快速排序,二叉搜索树BST. 总结: 1)二叉树问题基本都是考察递归,几乎所有的二叉树问题时间复杂度都是O(N),空间复杂度和二叉树的高度有关系,因为每一次递归都需要系统内存开一个栈空间进行存储, 2)其中递归函数中使用void的函数是遍历版本,使用有返回值的函数是分治版本,使用全局变量会影响多线程, 3)helper函数是在递归中使用的,因为原有的函数

在路上---学习篇(一)Python 数据结构和算法 (5)二分查找、二叉树遍历

独白: 利用算法进行查找指定元素,最近学习二分查找和二叉树遍历.二分查找前提是在有序中进行查找,二叉树引入了树的概念.树的概念其中有许多小知识点,也是一种新的数据结构.还是之前的感悟,需了解其本质才会写出更好的算法. 二分查找 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表.首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功:否则利用

结对编程感悟

我们是Core第四组,上学期在数据结构课程中我们曾经有过编写计算算数表达式的经历,所以知道自己要写内核后,感觉感觉在思路上不会有很苦难的地方,但是在随机生成表达式的编写时还是遇到了一些困难.这次的作业是结对编程和个人独立作业也有很大不同,需要两个人之间合作,最后生成API接口和UI组对接也是之前没有接触过的,两周左右的时间写完了core的确也有很多感悟. 结对与独立作业 刚看到题目时被那些琐碎,冗杂的分支条件所震撼,真是一脸懵逼,看到API和接口更是不知所云.在随后的几天中,随着讨论的深入,思路

python环境下使用mysql数据及数据结构和二叉树算法(图)

python环境下使用mysql数据及数据结构和二叉树算法(图):1 python环境下使用mysql2使用的是 pymysql库3 开始-->创建connection-->获取cursor-->操作-->关闭cursor->关闭connection->结束45 代码框架6 import pymysql.cursors7 ###连接数据库8 connection = pymysql.connect(host='127.0.0.1',port=3306,user='roo

C#实现二叉树的遍历

C#实现二叉树的前序.中序.后序遍历. public class BinaryTreeNode     {         int value;         BinaryTreeNode left;         BinaryTreeNode right;         /// <summary>         /// 前序遍历         /// </summary>         /// <param name="tree">&l

【树4】二叉树的遍历

简介 遍历二叉树就是按照某种顺序,将树中的结点都枚举一遍,且每个结点仅仅访问一次.因为树不是线性的结构,遍历不像线性表那样简单,因此他的遍历需要特点的算法来完成. 从某种角度讲,对二叉树的遍历就是将树形结构转换为线性结构的操作. 二叉树的遍历方法主要有如下几种: 先序遍历:先访问root结点,再先序遍历左子树,再先序遍历右子树. 中序遍历:先中序遍历左子树,再访问root结点,再中序遍历右子树. 后序遍历:先后序遍历左子树,再后序遍历右子树,再访问root结点. 层遍历:从上到下,从左到右,一层

按之字形顺序打印二叉树

题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; */ class Solution { public: vector<vect

【数据算法】Java实现二叉树存储以及遍历

二叉树在java中我们使用数组的形式保存原数据,这个数组作为二叉树的数据来源,后续对数组中的数据进行节点化操作. 步骤就是原数据:数组 节点化数据:定义 Node节点对象 存储节点对象:通过LinkedList保存Node节点对象 在操作过程中我们需要将当前结点和前一节点.后一节点进行关系绑定 package tree; import java.util.LinkedList; import java.util.List; /** * 功能:把一个数组的值存入二叉树中,然后进行3种方式的遍历 *