Given a binary tree where all the right nodes are either leaf nodes with a sibling (a left node that shares the same parent node) or empty, flip it upside down and turn it into a tree where the original right nodes turned into left leaf nodes. Return the new root.
For example:Given a binary tree
{1,2,3,4,5},1 / \ 2 3 / \ 4 5
return the root of the binary tree [4,5,2,#,#,3,1].
4
/ \
5 2
/ \
3 1
solution:
use stack to store left node from top to bottom, then reverse to construct the tree.
if(root ==null || (root.left == null && root.right == null)) return root;
Stack<TreeNode> path = new Stack<>();
while(root.left!=null) {
path.add(root);
root = root.left;
}
path.add(root);
while(!path.isEmpty()) {
TreeNode temp = path.pop();
if(!path.isEmpty()) {
temp.right = path.peek();
temp.left = path.peek().right;
}else{
temp.right = null;
temp.left = null;
}
}
return root;

本文介绍了一种方法,通过使用栈来翻转特定类型的二叉树,并将其转换为一种新的结构,其中原来的右节点变为左叶子节点。以给定的二叉树为例,展示了从原始树到翻转后的树的详细步骤。
784

被折叠的 条评论
为什么被折叠?



