摘要:
问题:这两种操作都用到了递归,别人说递归好理解,我真的不觉得递归好理解,只是递归的代码看起来简单。下面代码是求高度的另一种方法。递归计算高度是从底向上计算的,因此叶子节点高度为0;方法真的很巧妙。。。比如getTreeHigh(a->lchild)返回的就是a的左子树的高度,getTreeHigh(a->lchild)返回的就是a的右子树的高度。int getTreeHigh(BinTree btree){ int depth; if(btree==NULL) depth=0; else { depthleft=getTreeHigh(btree->lchild); ... 阅读全文
摘要:
问题:再一次验证自己功底的薄弱,对那些大侠只有仰慕的份。。。简单说一下自己的感受,递归的实现是个栈,每次函数结束时,退回到上一层,函数结束默认为return。二叉树的各种非递归实现用到的数据结构是栈。这次用重温了STL中stack的用法。代码:#include <iostream>#include <cstdlib>#include <stack>using namespace std;typedef struct node{ char data; struct node *left; struct node *right;}*BinTree;void Cr 阅读全文