36. 二叉搜索树与双向链表

NowCoder

题目描述

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

36. 二叉搜索树与双向链表 - 图1

解题思路

  1. private TreeNode pre = null;
  2. private TreeNode head = null;
  3. public TreeNode Convert(TreeNode root) {
  4. inOrder(root);
  5. return head;
  6. }
  7. private void inOrder(TreeNode node) {
  8. if (node == null)
  9. return;
  10. inOrder(node.left);
  11. node.left = pre;
  12. if (pre != null)
  13. pre.right = node;
  14. pre = node;
  15. if (head == null)
  16. head = node;
  17. inOrder(node.right);
  18. }

36. 二叉搜索树与双向链表 - 图2