您的位置:首页 > 其它

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);
}
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: