您的位置:首页 > 其它

leetcode[156] binary tree upside down

2014-12-19 11:31 363 查看
这题要收费了。只能网上看题目,我等屌丝也没法OJ测试了。网上看了后发现其实并非独创,其他的方也有类似的题。例如在这里,CareerCup

先用了递归的想法,

TreeNode *ans;
TreeNode *helper156(TreeNode *root)
{
if (!root -> left && !root -> right)
{
ans = root; return root;
}
TreeNode *parent = helper156(root -> left);
parent -> left = root -> right;
parent -> right = root;
root -> left = NULL;
root -> right = NULL;
return parent -> right;
}
TreeNode *UpsideDown(TreeNode *root)
{
if (root)
helper156(root);
return ans;
}


这里提到如果是非递归的那么和反转链表差不多Reverse Linked List II

TreeNode *UpsideDown2(TreeNode *root)
{
if (!root -> left && !root -> right) return root;
TreeNode *parent = NULL, *parentRight = NULL, *p = root;
while(p)
{
TreeNode *left = p -> left;
p -> left = parentRight;
parentRight = p -> right;
p -> right = parent;
parent = p;
p = left;
}
return parent;
}


不用递归还是挺妙的啊。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: