题解 | #二叉搜索树与双向链表#
二叉搜索树与双向链表
https://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5
import java.util.*; /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { public TreeNode Convert(TreeNode pRootOfTree) { if (pRootOfTree == null) { return pRootOfTree; } TreeNode node = postOrder(pRootOfTree, true); while (node.left != null) { node = node.left; } return node; } private TreeNode postOrder(TreeNode root, boolean isLeft) { if (root == null) { return root; } TreeNode nodeLeft = postOrder(root.left, true); TreeNode nodeRight = postOrder(root.right, false); if (nodeLeft != null) { nodeLeft.right = root; root.left = nodeLeft; } if (nodeRight != null) { nodeRight.left = root; root.right = nodeRight; } if (isLeft) { return nodeRight == null ? root: nodeRight; } else { return nodeLeft == null ? root : nodeLeft; } } }