用非递归的方法遍历二叉树

来源:互联网 发布:双反相机知乎 编辑:程序博客网 时间:2024/06/05 03:30

 

 

 

 

void treenumber(treelink *t)                 //按序号遍历二叉树{queuelink *q = queuecreate();          //创建一个队列queuedata temp;printf("%d ", t->data);                       //打印根节点数据queueenter(q, t);                               //先将根节点入队while(queueempty(q) == 0)             //第一次因为根节点入队,队肯定不为空{temp = queuedelete(q);               //出队,将“根”出队if(temp->data*2 <= N)                 //判断temp是否存在左子树,如果条件成立,则存在左子树{printf("%d ", temp->lchild->data);            //打印左子树     queueenter(q, temp->lchild);                     //将左子树入队}if(temp->data*2+1 <= N)            //判断temp是否存在右子树,如果条件成立,则存在右子树{printf("%d ", temp->rchild->data);       //打印右子树  queueenter(q, temp->rchild);                //将右子树入队} }printf("\n");}


 

版权所有:华清远见讲师牛利兵

原创粉丝点击