LintCode 第175题 反转二叉树

来源:互联网 发布:网络教育的特征 编辑:程序博客网 时间:2024/06/05 20:48

题目描述:

翻转一棵二叉树。

样例

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


原创粉丝点击