0
点赞
收藏
分享

微信扫一扫

LintCode 第175题 反转二叉树


题目描述:

翻转一棵二叉树。

样例


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;
}



举报

相关推荐

0 条评论