面试题01 - 二叉树的镜像 【树】[ water ]
2013-01-20 10:03
218 查看
题目:输入一颗二叉搜索树,将该树转换为它的镜像,即在转换后的二叉搜索树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。
例如输入:
8
/ \
6 10
/\ /\
5 7 9 11
输出:
8
/ \
10 6
/\ /\
11 9 7 5
1 该问题实质上是将二叉树的左右两子树,进行交换。
求二叉树的镜像
实现方法:
方法(1) : 前序遍历,交换左右子树,递归遍历 [ 这里采用 ]
方法(2) : 使用非递归的方法,遍历左右子树
例如输入:
8
/ \
6 10
/\ /\
5 7 9 11
输出:
8
/ \
10 6
/\ /\
11 9 7 5
1 该问题实质上是将二叉树的左右两子树,进行交换。
求二叉树的镜像
实现方法:
方法(1) : 前序遍历,交换左右子树,递归遍历 [ 这里采用 ]
方法(2) : 使用非递归的方法,遍历左右子树
#include <iostream> #include <string> #include <cstring> #include <cstdlib> #include <cstdio> #include <cmath> #include <vector> #include <stack> #include <deque> #include <queue> #include <bitset> #include <list> #include <map> #include <set> #include <iterator> #include <algorithm> #include <functional> #include <utility> #include <sstream> #include <climits> #include <cassert> #define BUG puts("here!!!"); using namespace std; struct Node { int value; Node* lchild; Node* rchild; }; void mirror(Node* pn) { if(pn == NULL) return; else { Node* tmp = pn->lchild; pn->lchild = pn->rchild; pn->rchild = tmp; if(pn->lchild) { mirror(pn->lchild); } if(pn->rchild) { mirror(pn->rchild); } } } int main() { return 0; }
相关文章推荐
- 面试题01 - 二叉树的镜像 【树】[ water ]
- 【剑指offer】面试题19:二叉树的镜像
- 剑指offer面试题19二叉树的镜像和二叉树的前中后遍历递归和非递归算法
- 剑指Offer面试题19(Java版):二叉树的镜像
- 面试题02 - 从上往下打印二叉树 【树】[ water ]
- 数据结构面试题/求一棵二叉树的镜像
- 面试题19:二叉树的镜像
- 剑指offer_面试题19_二叉树的镜像
- 面试题02 - 从上往下打印二叉树 【树】[ water ]
- 剑指offer面试题[19]-二叉树的镜像
- 剑指offer 面试题19—二叉树的镜像
- 面试题19:二叉树的镜像(Leetcode-101)
- 【剑指offer】面试题 27:二叉树的镜像
- 剑指Offer----面试题19:二叉树的镜像
- 面试题19 二叉树的镜像
- 二叉树面试题:判断树是否为完全二叉树和求二叉树的镜像
- 剑指Offer系列-面试题19:二叉树的镜像
- 剑指offer面试题19:二叉树的镜像
- 剑指offer面试题 二叉树的镜像
- 二叉树面试题(二)---求一颗二叉树的镜像