LeetCode897. 递增顺序查找树
题目
法一、自己
 1 class Solution {
 2 public:
 3     vector<int>res;
 4     TreeNode* increasingBST(TreeNode* root) {
 5         dfs(root);
 6         TreeNode* p = new TreeNode(0);
 7         TreeNode *cur = p;
 8         for(int i =0;i <res.size();i++){
 9             cur->val = res[i];
10             //cur->right = new TreeNode(res[i]);
11             if(i == res.size()-1) break;
12             cur->right = new TreeNode();
13             cur = cur->right;
14         }
15         return p;
16     }
17     void dfs(TreeNode* root){
18         if(root!=NULL){
19             dfs(root->left);
20             res.push_back(root->val);
21             dfs(root->right);
22         }
23     }
24 };
没有一次bug free直接A掉的原因是又忘记自己经常犯得一个错误,经常空指针赋值。
第一次写,9-13行为 cur->val = res[i]; cur = cur->right;这样在循环里更新后的cur可能为空。
所以先要创建一个右节点然后更新指针。并且最后一次不需要创建右节点,所以在最后一次
循环控制。
法二、类似链表中的创造哑节点的思想,就是创建一个头节点,之后并不是对访问结点更新,
而是对它的右节点更新
 1 class Solution {
 2 public:
 3     vector<int>res;
 4     TreeNode* increasingBST(TreeNode* root) {
 5         dfs(root);
 6         TreeNode* p = new TreeNode(0);
 7         TreeNode *cur = p;
 8         for(int i =0;i <res.size();i++){
 9             cur->right = new TreeNode(res[i]);
10             cur = cur->right;
11         }
12         return p->right;
13     }
14     void dfs(TreeNode* root){
15         if(root!=NULL){
16             dfs(root->left);
17             res.push_back(root->val);
18             dfs(root->right);
19         }
20     }
21 };
一定要学习这种做法
LeetCode897. 递增顺序查找树的更多相关文章
- [Swift]LeetCode897. 递增顺序查找树 | Increasing Order Search Tree
		Given a tree, rearrange the tree in in-order so that the leftmost node in the tree is now the root o ... 
- LeetCode 897. 递增顺序查找树(Increasing Order Search Tree)
		897. 递增顺序查找树 897. Increasing Order Search Tree 题目描述 给定一个树,按中序遍历重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有 ... 
- [LeetCode] 897. Increasing Order Search Tree 递增顺序查找树
		Given a tree, rearrange the tree in in-order so that the leftmost node in the tree is now the root o ... 
- 各种查找算法的选用分析(顺序查找、二分查找、二叉平衡树、B树、红黑树、B+树)
		目录 顺序查找 二分查找 二叉平衡树 B树 红黑树 B+树 参考文档 顺序查找 给你一组数,最自然的效率最低的查找算法是顺序查找--从头到尾挨个挨个遍历查找,它的时间复杂度为O(n). 二分查找 而另 ... 
- 查找算法(I) 顺序查找 二分查找 索引查找
		查找 本文为查找算法的第一部分内容,包括了基本概念,顺序查找.二分查找和索引查找.关于散列表和B树查找的内容,待有空更新吧. 基本概念 查找(search)又称检索,在计算机上对数据表进行查找,就是根 ... 
- lintcode-86-二叉查找树迭代器
		86-二叉查找树迭代器 设计实现一个带有下列属性的二叉查找树的迭代器: 元素按照递增的顺序被访问(比如中序遍历) next()和hasNext()的询问操作要求均摊时间复杂度是O(1) 样例 对于下列 ... 
- 浅谈算法和数据结构: 十 平衡查找树之B树
		前面讲解了平衡查找树中的2-3树以及其实现红黑树.2-3树种,一个节点最多有2个key,而红黑树则使用染色的方式来标识这两个key. 维基百科对B树的定义为“在计算机科学中,B树(B-tree)是一种 ... 
- 转 浅谈算法和数据结构: 十 平衡查找树之B树
		前面讲解了平衡查找树中的2-3树以及其实现红黑树.2-3树种,一个节点最多有2个key,而红黑树则使用染色的方式来标识这两个key. 维基百科对B树的定义为"在计算机科学中,B树(B-tre ... 
- java实现二叉树查找树
		二叉树(binary)是一种特殊的树.二叉树的每个节点最多只能有2个子节点: 二叉树 由于二叉树的子节点数目确定,所以可以直接采用上图方式在内存中实现.每个节点有一个左子节点(left childre ... 
随机推荐
- 跨站点脚本编制 - SpringBoot配置XSS过滤器(基于Jsoup)
			1. 跨站点脚本编制 风险:可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务. 原因:未对用户输入正确执行危险字符清 ... 
- 未雨绸缪,数据保护之NBU介质备份
			摘要:华为GaussDB目前已支持NBU介质的备份与恢复,本文主要描述了华为GaussDB数据库和NetBackup对接进行备份.恢复的配置方法与性能调优方法. 一.简介 企业要想避开自然灾难和站点中 ... 
- get \post 接口代码及断言编写
			post 请求接口 import requests import json url_path = "http://www.baidu.com" data = {"user ... 
- 面试 02-CSS盒模型及BFC
			02-CSS盒模型及BFC #题目:谈一谈你对CSS盒模型的认识 专业的面试,一定会问 CSS 盒模型.对于这个题目,我们要回答一下几个方面: (1)基本概念:content.padding.marg ... 
- SQL注入----盲注总结
			参考文章:https://mp.weixin.qq.com/s?__biz=MzIzMTc1MjExOQ==&mid=2247490388&idx=1&sn=c677837d7 ... 
- 使用基于Vue.js和Hbuilder的混合模式移动开发打造属于自己的移动app
			近几年,混合模式移动应用的概念甚嚣尘上,受到了一些中小型企业的青睐,究其原因,混合模式开发可以比传统移动开发节约大量的开发成本和人力成本. Hybrid App(混合模式移动应用)是指介于web-ap ... 
- jxl导出Excel中需要跳过的的坑
			正如上篇文章(JXL封装不能使用static关键字问题)所说,在jxl导出Excel时候如果频繁使用到WritableCellFormat去设置单元格的样式,这个时候经常会出现两种情况: 1.报警告: ... 
- 安装篇五:安装MySQL(5.6.38版本)
			#1.MySQL安装 #1.准备环境 # No1:关闭:(iptables)selinux # No2:下载好安装包(这里使用 mysql-5.6.38.tar.gz 包安装) # No3:安装依赖包 ... 
- spark 系列之一 RDD的使用
			spark中常用的两种数据类型,一个是RDD,一个是DataFrame,本篇主要介绍RDD的一些应用场景见代码本代码的应用场景是在spark本地调试(windows环境) /** * 创建 spark ... 
- Node.js躬行记(5)——定时任务的调试
			最近做一个活动,需要用到定时任务,于是使用了 node-schedule 库. 用法很简单,就是可配置开始.结束时间,以及重复执行的时间点,如下所示,从2020-12-23T09:00:00Z开始,每 ... 
