Leetcode——Binary Tree Easy笔记

终于可以悄悄开启新的学习旅程,争取早日把各个DS的easy先解决

104. Maximum Depth of Binary Tree

二叉树的最大深度。虽然很简单,可是没想出来···也许是太久没看二叉树了,没及时复习,全就饭吃了。。

//4.8复习,recursive很容易就写出来了,但是效率很显然很低,只打败了18%的人

所以尝试用栈什么的,但是没有一点思路,参考solution里面的代码

并做了一些更改【查看details才发现,并没有提高效率反而低了。。。是5%·······我想静静】

 public int maxDepth(TreeNode root) {
    if (root == null)
        return 0;//-----------忘记加这句,愣是坑在里面了,多次编译就是下面空指针异常,一定一定要!!!做输入检查!!!!
Deque
<TreeNode> deque=new LinkedList<>(); deque.addFirst(root); int counter=0; while(!deque.isEmpty()) { int size=deque.size();//获取刚刚压入栈的那一层的结点数目,是一层一层压入的 while(size-->0) {//从上面取出 //从下方压入 TreeNode pNode=deque.pollFirst(); if(pNode.left!=null) deque.addLast(pNode.left); if(pNode.right!=null) deque.addLast(pNode.right); } counter++; } return counter; }

Deque是双端队列,其实就是队列,还可以当stack用,比起那两个似乎这个更加提倡一些,其实直接 Queue =new LinkedList()就行,原题用的stack说实话觉得是错的,不过也ac了,因为后来竟然使用了addlast其实就是队列。

poll()是弹出,返回值,为空返回null

remove()是弹出,但是如果为空返回异常。

peek()则仅仅是获取

//复习4.13!竟然栽了!Deque作为 queue使用!是addLast()!!!pollFirst()!!!!!

作为stack使用 addFirst(),removeFirst()

 

226. Invert Binary Tree

哈哈这个自己写了出来,但是出错了改了一处名称就AC啦,重点是没搞清楚递归函数的输入和输出的关系,本函数中,这俩应该是同一货

***还有 又忘记做输入检查!!!!!

 final TreeNode left = root.left,
                right = root.right;
        root.left = invertTree(right);
        root.right = invertTree(left);

还是solution里面的更简洁些啊,反正都是要反转的,等你反转完了再分别做我的left和right吧

///感觉这种二叉树问题涉及到栈的都是 先解决,再分别压入左孩子右孩子的感觉。

//4.9复习   迭代+栈,迭代+队列

//DFS---对应栈

//BFS ----对应队列

 543. Diameter of Binary Tree

对每个节点,求最大和次大深度·····然后求最大的

543. Diameter of Binary Tree

很生气没心情

111. Minimum Depth of Binary Tree//0413继续!

转载于:https://www.cnblogs.com/Cherrylalala/p/6680138.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值