二叉树的镜像
2017-05-07 18:34
183 查看
二叉树的镜像是指将二叉树的每个节点的左右子树交换位置,就像从镜子里看到的一样。
定义二叉树:
方法一:递归
根据先序遍历的顺序,递归的调用该程序。
方法二:用队列保存
定义二叉树:
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(); } }
相关文章推荐
- 输入一个二叉树,输出其镜像。
- 【剑指offer】二叉树的镜像
- 二叉树的镜像
- 【树3】二叉树的镜像
- 【面试题019】二叉树的镜像
- 面试题(二十七) 二叉树的镜像
- OK 面试题27:二叉树的镜像
- 二叉树的镜像
- 剑指offer--面试题27:二叉树的镜像
- 判断二叉树是否平衡、求二叉树的镜像、按行列有序矩阵中快速查找元素是否存在
- day12之判断一棵二叉树是否是平衡二叉树+求一颗二叉树的镜像+判断一个数在二维数组中是否存在
- 剑指offer--面试题19:二叉树的镜像
- 【从零单排之微软面试100题系列】15之二叉树的镜像
- C++实现二叉树的镜像操作(18)---《那些奇怪的算法》
- 剑指Offer_面试题19_二叉树镜像
- 二叉树的镜像
- leetcode 二叉树是否为镜像对称
- 剑指offer-面试题19-二叉树的镜像
- 二叉树的镜像
- 剑指Offer 1521 二叉树的镜像