anyone interested to discuss about the last question in ACM this year? <Tunnels
登录 | 论坛导航 -> 华新鲜事 -> 求学狮城 | 本帖共有 20 楼,当前显示第 14 楼 : 从楼主开始阅读 : 本帖树形列表 : 返回上一页
作者:bugzzj (等级:2 - 初出茅庐,发帖:13) 发表:2007-09-24 14:50:06  14楼 
顺带询问一个问题是CLRS page 216 10.4-5 Write an O(n)-time nonrecursive procedure that, given an n-node binary tree, prints out the key of each node. Use no more than constant extra space outside of the tree itself and do not modify the tree, even temporarily, during the procedure.
如果child有到parent的ref的话。
Let
struct treeNode{
int id;
treeNode *left;
treeNode *right;
treeNode *par;
};

DFS(treeNode *root){
treeNode *cur=root;
while (cur!=NULL){
printf("%d, ", cur->id);
if (cur->left!=NULL){
cur=cur->left;
}
else if (cur->right!=NULL)
cur=cur->right;
else{
treeNode *par=cur->par;
while (par!=NULL){
if (par->left==cur && par->right!=NULL){
cur=par->right;
break;
}
cur=par;
par=par->par;
}
if (par==NULL) cur=NULL;
}
}
}

其实就是depth first, 应该是O(3n)=O(n)吧。
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表

本帖共有 20 楼,当前显示第 14 楼,本文还有 N-1 层楼,要不你试试看:点击此处阅读更多 >>



请登录后回复:帐号   密码