您的位置:首页 > 理论基础 > 数据结构算法

数据结构与算法之二叉树(一)-----建立二叉树以及反转二叉树

2015-07-02 15:51 513 查看
/*递归建立遍历二叉树:注意都是以结点未操作对象*/
#include<iostream>

using namespace std;

struct BinaryTreeNode
{
char element;//节点内容
BinaryTreeNode *leftNode;//指向左节点
BinaryTreeNode *rightNode;//指向右节点
};

/*先序建立*/
void createBiTree(BinaryTreeNode* &q)
{
char c;
cin >> c;
if (c == '#')
{
q = NULL;
}
else
{
q = new BinaryTreeNode;
q->element = c;
createBiTree(q->leftNode);
createBiTree(q->rightNode);
}
}

/*翻转二叉树*/
void mirrorBinaryTree(BinaryTreeNode* &q)
{
if (q->element){
BinaryTreeNode *temp;
temp = q->leftNode;
q->leftNode = q->rightNode;
q->rightNode = temp;
}
}

/*先序遍历*/
void preOrderTraverse(BinaryTreeNode* &q)
{
if (q)
{
cout << q->element << endl;
preOrderTraverse(q->leftNode);
preOrderTraverse(q->rightNode);
}
}
int main()
{
BinaryTreeNode *p;
createBiTree(p);
preOrderTraverse(p);
mirrorBinaryTree(p);
preOrderTraverse(p);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: