-
给定一个二叉排序树,求取他的镜像,如下图所示:
-
-
二叉树的处理一般会用到递归。我们从根节点开始处理,先交换根节点的左右孩子,再对根节点的左右孩子进行交换即可,代码如下:
-
#include
using namespace std;
typedef struct node
{
int val;
node *lChild;
node *rChild;
node(int val)
{
this->val = val;
this->lChild = nullptr;
this->rChild = nullptr;
}
node()
{
this->lChild = nullptr;
this->rChild = nullptr;
}
}TreeNode;
TreeNode *createTree(int i, int intarr[], int length)
{
TreeNode *node = nullptr;
if (i < length)
{
node = new TreeNode(intarr[i]);
node->lChild = createTree(i * 2 + 1, intarr, length);
node->rChild = createTree(i * 2 + 2, intarr, length);
}
return node;
}
void mirrorOfTree(TreeNode *root)
{
if (root == nullptr)//节点为空的时候,直接返回。
{
return;
}
else
{
TreeNode *nodetemp = root->lChild;//交换玩根节点的左右子树,再处理左右子树的交换。
root->lChild = root->rChild;
root->rChild = nodetemp;
mirrorOfTree(root->lChild);
mirrorOfTree(root->rChild);}
}
int main()
{
int intarr[6] = { 8,6,10,5,7,9 };
TreeNode root = createTree(0, intarr, 6);
mirrorOfTree(root);
system(“pause”);
return 0;
}
(2)类的指针和引用的基本操作
#include
using namespace std;
class B
{
public:
B()
{
cout << “construction of B” << endl;
}
void display()
{
cout << “this is a B” << endl;
}
};
class SinlgeTest
{
public:
static B& instance()//返回一个引用。
{
B instance_;
return instance_;
}
static B instance_1()//引用转换为指针的操作。
{
return &instance();
}
};
void display(B &b)//指针转换为引用的操作。
{
b.display();
}
int main()
{
auto b=SinlgeTest::instance();
b.display();
auto a = SinlgeTest::instance_1();
a->display();
display(*a);//指针转换为引用的操作。
system(“pause”);
return 0;
}
执行结果:如下图所示:
(1)求二叉排序树的镜像(2)类的指针和引用的操作
最新推荐文章于 2022-04-22 15:32:27 发布