在Java中重新链接树节点可以通过以下步骤实现:
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
public TreeNode reLinkTree(TreeNode root) {
if (root == null) {
return null;
}
// 重新链接左子树
TreeNode left = reLinkTree(root.left);
// 重新链接右子树
TreeNode right = reLinkTree(root.right);
// 将左子树的最右节点与当前节点的右子节点连接
if (left != null) {
TreeNode temp = left;
while (temp.right != null) {
temp = temp.right;
}
temp.right = right;
}
// 将当前节点的右子节点指向左子节点
root.right = left;
// 清空左子节点
root.left = null;
return root;
}
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
TreeNode newRoot = reLinkTree(root);
这样,就可以在Java中重新链接树节点。重新链接后的树节点,左子节点为空,右子节点指向原来的左子树。
领取专属 10元无门槛券
手把手带您无忧上云