剑指offer(10)-打印二叉树的镜像
2016-10-14 22:20
316 查看
题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。二叉树的结点定义如下:
分析后发现还是很好找规律的,对原二叉树进行前序遍历,只要遍历结点的左子结点或是右子结点存在,就交换两个结点位置。
如何用循环写呢?
struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };
分析后发现还是很好找规律的,对原二叉树进行前序遍历,只要遍历结点的左子结点或是右子结点存在,就交换两个结点位置。
class Solution { public: void Mirror(TreeNode *pRoot) { if (pRoot == NULL) return; if (pRoot->left != NULL || pRoot->right != NULL) { TreeNode* temp; temp = pRoot->right; pRoot->right = pRoot->left; pRoot->left = temp; } cout << pRoot->val; Mirror(pRoot->left); Mirror(pRoot->right); } };
如何用循环写呢?
class Solution { public: void Mirror(TreeNode *pRoot) { if (pRoot == NULL) return; stack<TreeNode*> s; s.push(pRoot); while (s.size() != 0) { TreeNode* tree = s.top(); s.pop(); if (tree->left != NULL || tree->right != NULL) { TreeNode* temp; temp = tree->left; tree->left = tree->right; tree->right = temp; } cout << pRoot->val; if (tree->left != NULL) s.push(tree->left); if (tree->right != NULL) s.push(tree->right); } } };
相关文章推荐
- 15.剑指offer-按照之字形打印二叉树
- 剑指offer-二叉树的镜像
- 剑指Offer_18_二叉树的镜像
- 剑指offer_二叉树的镜像
- 剑指Offer——二叉树的镜像
- 剑指offer-面试题19:二叉树的镜像
- 剑指offer--面试题23:从上往下打印二叉树--Java实现
- 剑指offer—从上往下打印二叉树
- 剑指offer: 二叉树的镜像(树)
- 剑指offer 编程题(17):二叉树的镜像
- 剑指offer题解 二叉树的镜像
- 剑指Offer——从上往下打印二叉树
- 【剑指Offer】把二叉树打印成多行
- 剑指offer 面试题19 二叉树的镜像
- 剑指offer面试题[60]-将二叉树打印成多行
- 剑指offer--二叉树的镜像
- 剑指offer面试题[19]-二叉树的镜像
- 剑指offer-从上往下打印二叉树
- 剑指offer——从上往下打印二叉树
- 剑指offer——把二叉树打印成多行