leetcode部分解题思路

1.二叉树,前序遍历

通过栈,先把root放入。判断栈不为空时,执行以下循环:抛出栈顶元素并记录值,将当前元素的右子(如有)入栈,左子(如有)压栈。

最后返回记录值的数组即可。

后序遍历

与前序基本一致,只是抛出栈顶元素后,先将左子入栈,再将右子入栈。保证所有顺序是右在最上面

最后将数组逆序,即为结果

中序遍历

先建个head节点,值随意,右子指向root,将head入栈。当栈不空,执行循环:

抛出栈顶元素并记录值,当前节点指向右子,执行内循环:当前节点不为空时,节点入栈,当前节点指向左子;

返回数组。

2.链表

判断是否有环:一快(走两步)一慢(走一步),直到相等(有)或快的为空(无)

逆序:逐个遍历,指针倒过来(需三个指针,分别一直指向前中后三个节点)

找链表环开始的节点:在判断环的基础上,当快慢相等时,使一个回到head开始走next,另一个当前走next,再相遇就是环的开始节点

原文地址:https://www.cnblogs.com/baby-lee/p/4704028.html