二叉搜索树与双向链表
Last updated
Last updated
问题简述
思路
根据二叉搜索树的性质,其中序遍历结果就是一个有序的单向链表;
因此本题要做的就是在中序遍历的过程中,修改指针的指向,得到双向链表;
考虑使用中序遍历访问树的各节点,记 cur
,初始化前驱节点 pre=None
;
在访问每个节点时构建 cur
和前驱节点 pre
的引用指向;
当 pre=None
时,说明该节点是最左叶子节点(中序遍历访问的第一个节点),即头结点 ret
;否则修改双向节点引用,即 pre.right = cur
, cur.left = pre
;
在访问右子树前,将 pre
指向 cur
;
中序遍历完成后,最后构建头节点和尾节点的引用指向。