滴滴出行大数据实习生面试题
来源:互联网 发布:openwrt mac限速 编辑:程序博客网 时间:2024/04/27 21:52
二叉树的遍历,前序的递归算法:
//输出
void Visit(BinaryTree T){
if(T->data != '#'){
cout<<T->data;
}
}
//前序遍历
void PreOrder(BiTree T){
if(T != NULL){
//访问根节点
Visit(T);
//访问左子结点
PreOrder(T->lchild);
//访问右子结点
PreOrder(T->rchild);
}
}
二叉树的遍历的非递归算法
(1)前序遍历
【思路】:访问T->data后,将T入栈,遍历左子树;遍历完左子树返回时,栈顶元素应为T,出栈,再先序遍历T的右子树。
//先序遍历(非递归)
void PreOrder2(BinaryTree T){
stack<BinaryTree> stack;
//p是遍历指针
BinaryTree p = T;
//栈不空或者p不空时循环
while(p || !stack.empty()){
if(p != NULL){
//存入栈中
stack.push(p);
//访问根节点
cout<<p->data;
//遍历左子树
p = p->lchild;
}
else{
//退栈
p = stack.top();
stack.pop();
//访问右子树
p = p->rchild;
}
}//while
层次遍历
【思路】:按从顶向下,从左至右的顺序来逐层访问每个节点,层次遍历的过程中需要用队列。
//层次遍历
void LevelOrder(BinaryTree T){
BinaryTree p = T;
//队列
queue<BinaryTree> queue;
//根节点入队
queue.push(p);
//队列不空循环
while(!queue.empty()){
//对头元素出队
p = queue.front();
//访问p指向的结点
cout<<p->data;
//退出队列
queue.pop();
//左子树不空,将左子树入队
if(p->lchild != NULL){
queue.push(p->lchild);
}
//右子树不空,将右子树入队
if(p->rchild != NULL){
queue.push(p->rchild);
}
}
}
阅读全文
0 0
- 滴滴出行大数据实习生面试题
- 联想2015云计算大数据实习生面试题
- 腾讯实习生面试题
- 阿里实习生面试题
- 百度实习生面试题
- 测试实习生面试题
- 新浪实习生面试题
- 大数据分析:高温天与滴滴出行或许更配哦
- 5.19滴滴大数据研发实习
- 人搜实习生面试题
- 深圳移动实习生面试题
- 2012 百度实习生面试题
- 美团实习生面试题
- IBM --Java 实习生面试题
- 美团网--java实习生面试题
- 滴滴出行
- CCF牵手滴滴出行,挖掘大数据技术、助力人才评选与培养
- 关于滴滴出行产品类实习三个面试
- noip2010 数字统计 (统计某一数字区间中,2出现的次数)
- Angularjs系列之常用内置指令
- python爬虫——新浪新闻网络爬虫
- 表达式SpEL方式的属性注入
- 清华大学2008年机试-进制转换-1080
- 滴滴出行大数据实习生面试题
- String类源码解析
- 各种主流数据库默认端口号丶驱动丶URL总结
- 关于node.js
- mysql内连接,外连接
- eclipse中git分支创建与合并
- ABAP--一个极好的调用外部java程序的Search Help Exit的实例(RFC好例子)
- 百练 3420: Exchange Rates
- Android 滑动显示每一年所有日期的功能