题解 | #二叉搜索树与双向链表#
二叉搜索树与双向链表
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;
}
}
}
查看2道真题和解析
百度公司氛围 562人发布