Skip to content

Latest commit

 

History

History
 
 

156.Binary-Tree-Upside-Down

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

156.Binary-Tree-Upside-Down

此题的意思是:对于一个根-左-右的基本树状结构,右子树保证只有一个或为空。要求变形后,以左子树为根,把原来的根和右节点作为新根节点的右、左节点。

解决此题的思路应该坚定不移地寻找递归方案。

经过分析,应该能够发现,对于一个root,left,right的基本结构,变形后的新结构应该变为:递归(root->left)作为根,root作为右,root->left作为左。于是代码就非常好写了。

注意到递归(root->left)返回的是它的根节点。怎么把root作为递归(root->left)的右子树呢?只要不停地从根节点往右子树方向移动就可以了。

基本代码思路

head=upsideDownBinaryTree(root->left);
node=head一路向右;
node->right=root;
node->left=root->right;
root->left=NULL; //root原本的左右子节点要清空
root->right=NULL;

Leetcode Link