21.设一棵具有n个结点的完全二叉树采用顺序存储结构,保存在一维数组A中。试设计一个递归算法,复制该完全二叉树,得到一棵新的采用普通二叉链表存储的二叉树。二叉链表的每个结
【题目】编写复制一棵二叉树的递归算法。 二叉链表类型定义: typedef char TElemType; // 设二叉树的元素为char类型 typedef struct BiTNode { TElemType data; struct BiTNode *lchild, *rchild; } BiTNode, *BiTree; ***/ void CopyBiTree(BiTree T, BiTree &TT) /* 递归复制二叉树T得到TT */ { if(...
遍历二叉树的非递归算法用到一个栈,而复制的话用到两个栈,一个存被复制的二叉树,一个存复制到的二叉树。新的二叉树永远跟着已经存在的二叉树的节奏走,已经存在的那颗二叉树找左结点,新的二叉树也找左结点,已经存在的二叉树入栈,新的二叉树也入栈。每次到根结点的时候就进行二叉树结点值的拷贝 方法的返回 ...
其实递归算法隐藏了栈而已... 手动把这个栈构建出来就算成功了...以上是一段C#代码示例 java代码应该复制粘贴就能用 C或者C++的话把BNode写成指针就可以使用...
//非递归方法 pbinary_tree_node copy_binary_tree(pbinary_tree_node bt){//先序遍历输出一颗树的全部结点值1,2,3 stack stack_left,stack_right;pbinary_tree_node newbt;if (bt!=NULL){ //new root newbt=new binary_tree_node;newbt->data=bt->data;//travel bt and travel newbt...
个递归算法,由这种形式的字符序列,建立相应的 二叉树的二叉链表存储结构。 要求实现以下函数: void BuildBiTree(BiTree &bt, char *s, int &i); /* 单遍扫描广义表形式的字符序列s,*/ /* 建立相应的二叉树bt。*/ /* i为扫描s时当前字符的序号,初值为0 */ 二叉链表类型定义: ...
21.设一棵貝有n个结点的完全二叉树采用顺序存储结构,保存在一维数组A中。试设计一个递归算法,复制该完全二叉树,得到一棵新的采用普通二叉链表存储的二叉树。二叉链表的每个结