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

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

翻转一棵二叉树

样例

1         1 / \       / \2   3  => 3   2   /       \  4         4

递归版本

先翻转左子树,后翻转右子树,然后对整个树进行翻转

void swapTree(TreeNode *&root){    TreeNode *tmp = root->left;    root->left = root->right;    root->right = tmp;}void invertBinaryTree(TreeNode *root) {    // write your code here    if(root == NULL)        return;    invertBinaryTree(root->left);    invertBinaryTree(root->right);    swapTree(root);}

非递归版本

非递归版本用栈来实现,到访问到头节点的时候,将其左子树和右子树互换即可。

void swapTree(TreeNode *&root){    TreeNode *tmp = root->left;    root->left = root->right;    root->right = tmp;}void invertBinaryTree(TreeNode *root) {    // write your code here    if(root == NULL)        return;    stack
stk; stk.push(root); while(!stk.empty()) { TreeNode *tmp = stk.top(); stk.pop(); swapTree(tmp); if(tmp->left) stk.push(tmp->left); if(tmp->right) stk.push(tmp->right); }}

(175) Invert Binary Tree 

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

你可能感兴趣的文章
宝宝出牙顺序图
查看>>
XML简单读写
查看>>
10款宝宝最爱的家常辅食
查看>>
Visual Studio 2005 开发WPF应用程序系列文章——什么是WPF
查看>>
利用 Office 的 OWC 做报表
查看>>
怎样成为优秀的软件模型设计者
查看>>
面向对象软件设计的“开—闭”原则
查看>>
Visual C#2005中的匿名委托的实现
查看>>
C#几种常用的排序算法
查看>>
C#中调用Windows API的要点
查看>>
C#开发终端式短信的原理和方法
查看>>
使用P/Invoke来开发用于与串行设备通讯的.NET基类
查看>>
NET 2.0 中的自定义配置处理
查看>>
区别C#中的两个属性(Property和Attribute)
查看>>
利用反射来动态创建实例和调用方法
查看>>
Winform中多国语言窗体的设计以及.NET中资源文件的使用
查看>>
61条面向对象设计的经验原则---Arthur J.Riel
查看>>
.NET反编译工具Reflector及插件
查看>>
2007中国理财年度人物评选榜单揭晓
查看>>
牢记卖股票的四大纪律十项注意
查看>>