#include "iostream"
using namespace std;
#define max 20 //the number of node
typedef struct BTNode
{
char data;
struct BTNode *lc,*rc;
}BTree;
#define STACK_INIT_SIZE 100
#define STACK_INCR 10
typedef struct
{
BTree *base;
BTree *top;
int stackSize;
} Stack;
void initStack(Stack &stack) //初始化栈
{
stack.base = stack.top = (BTree *)malloc(sizeof(BTree) * STACK_INIT_SIZE);
stack.stackSize = STACK_INIT_SIZE;
}
void pop(Stack &S, BTree * &T) //出栈
{
if(S.top == S.base)
{
T = NULL;
return ;
}
T = --S.top;
}
void push(Stack &S, BTree * &T) //进栈
{
if(S.top - S.base >= S.stackSize)
{
S.base=(BTree*)realloc(S.base,(S.stackSize+STACK_INCR)*sizeof(BTree));
S.top = S.base + S.stackSize;
S.stackSize += STACK_INCR;
}
*S.top++ = *T;
}
bool stackEmpty(Stack S) //判断栈是否为空
{
return S.top == S.base ? true : false;
}
BTree *cre
使用栈非递归实现复制二叉树
最新推荐文章于 2023-04-03 16:14:39 发布
本文介绍了一种利用栈非递归的方式实现复制二叉树的算法。通过迭代的方式,首先将原始二叉树的所有节点压入栈中,然后依次弹出节点并创建对应的复制节点,连接新旧节点,确保复制树结构完整。
摘要由CSDN通过智能技术生成