C语言实现输入一颗二元查找树并将该树转换为它的镜像


本文实例讲述了C语言实现输入一颗二元查找树并将该树转换为它的镜像的方法,分享给大家供大家参考。具体实现方法如下:

采用递归方法实现代码如下:

/* 
* Copyright (c) 2011 alexingcool. All Rights Reserved. 
*/ 
#include <iostream>
#include <iterator>
#include <algorithm>

using namespace std;

struct Node {
 Node(int i = 0, Node *l = NULL, Node *r = NULL) : item(i), left(l), right(r) {}
 
 int item;
 Node *left;
 Node *right;
};

Node *Construct()
{
 Node *node6 = new Node(11);
 Node *node5 = new Node(9);
 Node *node4 = new Node(7);
 Node *node3 = new Node(5);
 Node *node2 = new Node(10, node5, node6);
 Node *node1 = new Node(6, node3, node4);
 Node *root = new Node(8, node1, node2);

 return root;
}

void Convert(Node *root)
{
 if(root == NULL)
 return;

 Convert(root->left);
 //在这里试试swap(root->left, root->right),
 //看输出结果,有利于理解二叉树递归
 Convert(root->right);
 swap(root->left, root->right); 
}

void InOrder(Node *root)
{
 if(root) {
 InOrder(root->left);
 cout << root->item << " ";
 InOrder(root->right);
 }
}

void main()
{
 Node *root = Construct();
 InOrder(root);
 cout << endl;
 Convert(root);
 InOrder(root);
}

希望本文所述实例对大家C程序算法设计的学习有所帮助。


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3