1、二叉树相似性判断。
试设计算法,判断两棵二叉树是否相似。所谓二叉树t1与t2相似,指的是t1和t2都是空的二叉树;或者t1的左子树与t2的左子树相似,同时t1的右子树与t2的右子树相似。
2、求从二叉树根节点到r节点之间的路径。
假设二叉树采用二叉链表方式存储,root指向根节点,r所指节点为任一给定的节点。编写算法,求出从根节点到节点r之间的路径。
3、设二叉树按二叉链表存储,写算法判别一棵二叉树是否是一棵正则二叉树。正则二叉树是指在二叉树中不存在子树个数为1的节点。
4、试编写计算二叉树最大宽度的算法。二叉树的最大宽度是指,二叉树所有层中节点个数的最大值。
5、试编写算法交换二叉树的左右子树。设二叉树用二叉链表存储。
代码实现及解释:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#define Maxsize 100
#define OK 1
#define OVERFLOW -2
#define Size 100
using namespace std;
typedef char CElemType;
typedef struct BiNode
{
CElemType data;
struct BiNode*lchild,*rchild;
} BiNode,*BiTree;
void CreateBiTree2(BiTree &t) ///引用实现创建一棵二叉树
{
char ch;
scanf("%c",&ch);
if(ch=='