树 头指针的小细节
树的头指针
数据结构看完对链表头指针印象还是很深刻的,但是没有实践写过相关代码,近期leetcode刷题碰到用数据结构的中等题都歇菜了,今天是897递增顺序搜索树一个简单题,看完后有了思路,中序遍历(递归)+右子树斜树,但是写代码就犯难了,我发现我还没用java写过数据结构,之前看的大话数据结构还是用C写的,然后我便参考了宫水三叶的题解。
1 | TreeNode dummy = new TreeNode(-1);//头指针,方便头结点找前驱结点 |
题解里这段把我看懵了,不知道为什么要新建dummy这个节点,返回值为什么是dummy.right。在网上搜了一会儿,我找到了答案。
dummy就是一个头指针,因为头结点没有前驱节点,dummy相当于一个工具服务头结点,用来定义头结点的。然后把dummy赋予head,开始循环赋值,最后返回值自然而然便是dummy.right,因为dummy头指针没用,从其右子树开始。
果然还是实践出真知,以后初始化树,头指针的应用我是记下了。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 哀殿firstの空间!
评论