Amazon Interview Question SDE1s
Given a binary tree. Modify it in such a way that after modification you can have a preorder traversal of it using only right pointers. During modification you can use right as well as left pointers. Write complete code and dry run it for some test cases
左子树转换后的最右叶子节点的右子树是root,(还要把当前节点的左子树设置为null)。
root.right是右子树转换后的头节点。
public static TreeNode transLeft(TreeNode root) { if (root==null) { return null; } TreeNode result = root; if (root.left!=null) { result = transLeft(root.left); TreeNode leftTrans = result; while (leftTrans.right!=null) { leftTrans = leftTrans.right; } leftTrans.right = root; root.left = null; } if (root.right!=null) { TreeNode rightTrans = transLeft(root.right); root.right = rightTrans; } return result; }