/*递归建立遍历二叉树:注意都是以结点未操作对象*/
#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;
}
数据结构与算法之二叉树(一)-----建立二叉树以及反转二叉树
最新推荐文章于 2022-03-07 21:05:46 发布