题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
后序遍历,最后来改根节点的指针,递归的思路
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| public TreeNode Convert(TreeNode pRootOfTree) { TreeNode head = null; if (pRootOfTree == null) { return head; }
TreeNode leftHead = Convert(pRootOfTree.left); TreeNode rightHead = Convert(pRootOfTree.right);
pRootOfTree.left = null; if (rightHead != null) { pRootOfTree.right = rightHead; rightHead.left = pRootOfTree; } else { pRootOfTree.right = null; } head = pRootOfTree;
if (leftHead != null) { TreeNode tn = leftHead; for (; tn.right != null; tn = tn.right) { } tn.right = pRootOfTree; pRootOfTree.left = tn; head = leftHead; } return head; }
|