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
class Solution {
public:
TreeNode *upsideDownBinaryTree(TreeNode *root)
{
TreeNode *par = 0, *nodeR = 0, *cur = root;
while (cur != 0)
{
TreeNode *nextL = cur->left, *nextR = cur->right;
cur->left = nodeR;
cur->right = par;
par = cur;
nodeR = nextR;
if (nextL == 0)
return cur;
cur = nextL;
}
return cur;
}
};
倒置二叉树算法
本文介绍了一种将特定类型的二叉树翻转为新树结构的算法,原树中所有右节点变为左叶节点。通过示例展示了翻转过程,并提供了一个C++实现方案。
231

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



