17.寻找下一个结点
2015-09-09 14:25
127 查看
题目描述
请设计一个算法,寻找二叉树中指定结点的下一个结点(即中序遍历的后继)。给定树的根结点指针TreeNode* root和结点的值int p,请返回值为p的结点的后继结点的值。保证结点的值大于等于零小于等于100000且没有重复值,若不存在后继返回-1。
思路:中序遍历,将节点存入队列,对队列操作
代码如下:
import java.util.*; /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } }*/ public class Successor { Queue<TreeNode> q=new LinkedList<TreeNode>(); public int findSucc(TreeNode root, int p) { if(root==null)return -1; InOrder(root); int tmp=-1; while(!q.isEmpty()){ tmp=q.poll().val; if(tmp==p){ if(!q.isEmpty()){ return q.poll().val; }else{ return -1; } } } return -1; } public void InOrder(TreeNode root){ if(root.left!=null) InOrder(root.left); if(root!=null){ q.offer(root); } if(root.right!=null) InOrder(root.right); } }
相关文章推荐
- Android第四十七期 - WheelView沉浸式菜单栏
- Android第四十七期 - WheelView沉浸式菜单栏
- Qt for android 界面适应
- JVM工作原理
- 水经注离线三维地球触摸GIS系统
- LightOj 1186 Incredible Chess nim游戏
- UICollectionView详解二
- fix an error while building native gdb via ct-ng
- Java synchronized详解 二
- Python对象及内存管理
- C++中智能指针的设计和使用
- [iOS开发]C语言-04-程序循环结构(while{})视频解说
- Ubuntu Server搭建svn服务以及迁移方法
- ASIHTTPRequest配置及常见问题
- hdu 2014 青年歌手大奖赛_评委会打分
- Advanced R之数据结构
- 实现流式布局
- webbrowser和IE
- Java synchronized详解 一
- Spark编译与部署(上)--基础环境搭建