leetcode数据结构入门 | 1249.移除无效的括号 1382.将二叉搜索树变平衡 108.将有序数组转化为高度平衡二叉搜索树 105.前序遍历+中序遍历=二叉树 103.二叉树的锯齿形层次遍

1249.移除无效的括号

先统计右括号的总数right,再遍历整个字符串。

遍历整个字符串:

若'(',if right>0,ans保留'(',左括号总数left++,right--;

            else ans不保留。

若')',if left>0,ans保留')',左括号总数left--;

          else  ans不保留')',且right--。

若为字母,ans保留该字母。

count函数可以用来统计字符串中某个字符的个数使用方法是count(begin,end,‘a’),其中begin指的是起始地址,end指的是结束地址,第三个参数指的是需要查找的字符。

 

1382.将二叉搜索树变平衡

二叉搜索树→中序遍历→数组→二分/递归→平衡二叉搜索树

108.将有序数组转化为高度平衡二叉搜索树

105.前序遍历+中序遍历=二叉树 (好难,感觉结构不是很清楚,还用递归就更蒙了)

在中遍历中定位根结点;建立根节点。

(每次定位都需要遍历一次中序数组,时间复杂度o(n);

利用哈希映射,键对值记录[节点的值,节点在数组中的位置];根节点定位时间复杂度o(1))

在中序遍历中得到左子树节点数目,

递归构造左子树,链接到根结点。

先序遍历中「 左边界+1 , 左边界+1+左子树节点数目」个元素就对应了中序遍历中「 左边界 ,根节点定位-1」的元素。

递归构造右子树,链接到根结点。

先序遍历中「 左边界+1+左子树节点数目,右边界」个元素就对应了中序遍历中「 根节点+1,右边界」的元素。

103.二叉树的锯齿形层次遍

102.二叉树的层次遍历

---广度优先遍历:

 锯齿形层次遍

可以利用「双端队列」的数据结构来维护当前层节点值输出的顺序。

当前层节点的遍历顺序 order:

从左到右,插入双端队列的末尾;从右到左,插入双端队列的头部。

 199.二叉树的右视图

使用层序遍历,并只保留每层最后一个节点的值。

自己想出来啦。欧耶!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值