二叉树的镜像
来源:互联网 发布:域名过期多少钱续费 编辑:程序博客网 时间:2024/05/19 20:39
二叉树的镜像是指将二叉树的每个节点的左右子树交换位置,就像从镜子里看到的一样。
定义二叉树:
using namespace std;template <class T>struct BinaryTreeNode//定义二叉树的节点{ BinaryTreeNode(const T& value) :_value(value) ,_pLeft(NULL) ,_pRight(NULL) {} T _value; BinaryTreeNode<T>* _pLeft; BinaryTreeNode<T>* _pRight;};template<class T>class BinaryTree//定义二叉树{ typedef BinaryTreeNode<T> Node;public: BinaryTree() :_pRoot(NULL) {}private: Node* _pRoot;//根节点};
方法一:递归
void BinaryMirror() { return _BinaryMirror(_pRoot); } void _BinaryMirror(Node* pRoot) { if(pRoor == NULL) return ; std::swap(pRoot->_pLeft, pRoot->_pRight); _BinaryMirror(pRoot->_pLeft); _BinaryMirror(pRoot->_pRight); }
根据先序遍历的顺序,递归的调用该程序。
方法二:用队列保存
void BinaryMirror_Nor() { if(_pRoot == NULL) return ; queue<Node*> q; q.push(_pRoot); while(!q.empty()) { Node* pCur = q.front(); if(pCur->_pLeft) q.push(pCur->_pLeft); if(pCur->_pRight) q.push(pCur->_pRight); std::swap(pCur->_pLeft, pCur->_pRight); q.pop(); } }
0 0
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 从程序员到CTO的Java技术路线图
- 多用户同时在一台服务器编译Android源码错误——Communication error with Jack server (77)
- 树的直径
- Oracle Coherence 应用优化
- Error:(51, 52) 错误: -source 1.6 中不支持 diamond 运算符
- 二叉树的镜像
- Java中parseInt()和valueOf(),toString()的区别
- 进阶--编程练习
- 浅谈前端性能优化(九)——DNS解析优化
- MongoDB的安装预配置(V3.4版本)
- dephi Twebbrowser控件运行使用指定IE浏览器版本
- C#操作数据库进行简单的增加修改操作
- Java中如何使某个类的对象唯一性,只能创建一个对象
- Android新特性之CardView的简单使用