题目:
输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。
用递归和循环两种方法完成树的镜像转换。
例如输入:
8
/ \
6 10
/\ /\
5 7 9 11
输出:
8
/ \
10 6
/\ /\
11 9 7 5
定义二元查找树的结点为:
struct BSTreeNode // a node in the binary search tree (BST)
{
int m_nValue; // value of node
BSTreeNode *m_pLeft; // left child of node
BSTreeNode *m_pRight; // right child of node
};
思路一:
这道题很容易就让人想到解决方案,镜像的实现在这里可以直接交换左右节点就可以实现,用递归实现比较简单,用循环来实现的话就稍微麻烦一点,要借用队列来实现.
代码如下:
#include "stdafx.h"
#include <assert.h>
#include "Queue.h"
/*--------------------------------
查找树转换为自己的镜像算法.
Copyright by yuucyf.