遍历二叉树的非递归算法用到一个栈,而复制的话用到两个栈,一个存被复制的二叉树,一个存复制到的二叉树。新的二叉树永远跟着已经存在的二叉树的节奏走,已经存在的那颗二叉树找左结点,新的二叉树也找左结点,已经存在的二叉树入栈,新的二叉树也入栈。每次到根结点的时候就进行二叉树结点值的拷贝 方法的返回 ...
void Main(){BNode node = new BNode(){value = "1",lNode = new BNode(){value = "1-1"},rNode = new BNode(){value = "1-2",lNode = new BNode() {value = "1-2-1",rNode = new BNode() {value = "1-2-1-2"}},rNode = new BNode() {value = "1-2-2...
二叉树可以用广义表形式的字符序列表示。试写一 个递归算法,由这种形式的字符序列,建立相应的 二叉树的二叉链表存储结构。 要求实现以下函数: void BuildBiTree(BiTree &bt, char *s, int &i); /* 单遍扫描广义表形式的字符序列s,*/ /* 建立相应的二叉树bt。*/ ...
//非递归方法 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...