博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
翻转二叉树
阅读量:4289 次
发布时间:2019-05-27

本文共 712 字,大约阅读时间需要 2 分钟。

非递归算法:

1、交换根节点的左右子节点

2、交换第二层每个节点的左右子节点

....

这个与二叉树层次遍历类似,代码如下:

[cpp] 
 
 
  1. TreeNode* invertTree2(TreeNode* root) {  
  2.         queue<TreeNode*> tree_queue;  
  3.         if (root == NULL)  
  4.             return root;  
  5.         tree_queue.push(root);  
  6.         while(tree_queue.size() > 0){  
  7.             TreeNode * pNode = tree_queue.front();  
  8.             tree_queue.pop();  
  9.             TreeNode * pLeft = pNode->left;  
  10.             pNode->left = pNode->right;  
  11.             pNode->right = pLeft;  
  12.             if (pNode->left)  
  13.                 tree_queue.push(pNode->left);  
  14.             if (pNode->right)  
  15.                 tree_queue.push(pNode->right);  
  16.         }  
  17.         return root;  
  18.     }  

递归算法:

1、交换根节点的左右子树。

2、对左右子树分别执行递归反转 。

代码如下:

[cpp] 
 
 
  1.  TreeNode* invertTree(TreeNode* root) {  
  2. f(root==NULL)  
  3.     return NULL;  
  4. TreeNode * ptmpNode = root->left;  
  5. root->left = invertTree(root->right);  
  6. root->right = invertTree(ptmpNode);  
  7. return root;  
  8.   }  

转载地址:http://zcrgi.baihongyu.com/

你可能感兴趣的文章
面试神器第二弹:Rxjava熟悉——操作符
查看>>
带你过一遍Android 多主题框架——MagicaSakura
查看>>
这款神器你不学就要落后了!
查看>>
谷歌开源跨平台UI框架——Flutter
查看>>
Android进阶必学:自定义注解之动态代理
查看>>
Android进阶必学:自定义注解之反射
查看>>
Android进阶之注解解析和自定义注解
查看>>
你想成为Android高级工程师你还得学习Hook
查看>>
菜鸟带你Hook技术实战
查看>>
BAT面试题集锦——Java基础(一)
查看>>
BAT面试题集锦——Java基础(二)
查看>>
Retrofit原理解析最简洁的思路
查看>>
Okhttp的源码解读
查看>>
【Android P】 JobScheduler服务源码解析(二) ——框架解析
查看>>
【Android P】 JobScheduler服务源码解析(三)—— 使用Job需要注意的点
查看>>
string和wstring相互转换
查看>>
c++读取utf8等不同编码文件
查看>>
STL中的vector
查看>>
C++中的map
查看>>
Python小时钟
查看>>