LintCode 第175题 反转二叉树
原创
©著作权归作者所有:来自51CTO博客作者小怡情ifelse的原创作品,请联系作者获取转载授权,否则将追究法律责任
题目描述:
翻转一棵二叉树。
样例
1 1
/ \ / \
2 3 => 3 2
/ \
4 4
思路:
1.使用递归,左节点赋值给右节点,注意使用局部变量temp节点去交换存储。
实现代码:
#include <iostream>
using namespace std;
typedef struct BinaryTreeNode{
char value;
struct BinaryTreeNode *lchild,*rchild;
}treeNode;
BinaryTreeNode * CreatBiTree() {
BinaryTreeNode * node;
char data;
cout<<"请输入当前节点value值:";
cin>>data;
if (data == '#') {
node = NULL;
} else {
node = (BinaryTreeNode *)malloc(sizeof(BinaryTreeNode));//new BinaryTreeNode;
node->value = data;
node->lchild = CreatBiTree();
node->rchild = CreatBiTree();
}
return node;
}
BinaryTreeNode * reverseBinary(BinaryTreeNode * node){
if (node== NULL) {
return NULL;
}
BinaryTreeNode * temp = node->lchild;
node->lchild = node->rchild;
node->rchild = temp;
reverseBinary(node->lchild);
reverseBinary(node->rchild);
return node;
}
int main(int argc, const char * argv[]) {
// insert code here...
std::cout << "Hello, World!\n";
BinaryTreeNode * node = CreatBiTree();
BinaryTreeNode * reverseNode = reverseBinary(node);
return 0;
}