Depth First Search help

I have an assignment to do on a graph and have to apply depth first search so it ouputs the vertices in a order. I understand the algorithm and can do it on paper but i cannot do it in code so if anyone can help me on this. Here are the classes i am working with
public class MatrixGraph extends AbstractGraph {
    private double[][] matrix;
    public MatrixGraph(int nV, boolean direct, boolean weight ){
        super(nV, direct, weight);
        matrix = new double[nV][nV];
        // if a weighted graph set all values to Double.POSITIVE_INFINITY 
        // otherwise set all values to 0
        //complete this code
    public boolean isEdge(int source, int dest) {
        throw new UnsupportedOperationException("Not supported yet.");
    public void insert(Edge edge) {
        throw new UnsupportedOperationException("Not supported yet.");
    public void remove(Edge edge) {
        throw new UnsupportedOperationException("Not supported yet.");
    public void depthFirstTraversal(int start){
        //Output the vertices in depth first order
public abstract class AbstractGraph implements Graph {
    private int numV;
    private boolean directed;
    private boolean weighted;
    public AbstractGraph(int nV, boolean direct, boolean weight){
        numV = nV;
        directed = direct;     
        weighted = weight;
    public int getNumV() {
        return numV;
    public boolean isDirected() {
        return directed;
    public boolean isWeighted() {
        return weighted;
public interface Graph {
    //returns the number of vertices
    int getNumV();
    // determine if this is a directed graph
    boolean isDirected();
    // determine if this is a weighted graph
    boolean isWeighted();
    // determine if an edge exists between source and destination
    boolean isEdge(int source, int dest);
    void insert(Edge edge);
    void remove(Edge edge);
}

JavaLearner2009 wrote:
public void depthFirstTraversal(int start){
//Output the vertices in depth first order
}I need help on this part i don't know how to write it.You mentioned you understand the algorithm and can do it on paper so what have you tried so far?
If you are completely stuck on implementing the traversal in Java, provide pseudo code.
Mel

Similar Messages

  • 8-Puzzle Depth First Search .. Need Help

    Hi, I have the following code for doing a depth first search on the 8-Puzzle problem
    The puzzle is stored as an object that contains an array such that the puzzle
    1--2--3
    4--5--6
    7--8--[] is stored as (1,2,3,4,5,6,7,8,0)
    The class for the puzzle is:
    class Puzzle implements {
         Puzzle parent;
         int[] pzle;
         int blank;
         Puzzle(int p1,int p2,int p3,int p4,int p5, int p6, int p7, int p8, int p9){
              pzle = new int[9];
              pzle[0] = p1; if(p1==0){ blank=0;}
              pzle[1] = p2; if(p2==0){ blank=1;}
              pzle[2] = p3; if(p3==0){ blank=2;}
              pzle[3] = p4; if(p4==0){ blank=3;}
              pzle[4] = p5; if(p5==0){ blank=4;}
              pzle[5] = p6; if(p6==0){ blank=5;}
              pzle[6] = p7; if(p7==0){ blank=6;}
              pzle[7] = p8; if(p8==0){ blank=7;}
              pzle[8] = p9; if(p9==0){ blank=8;}
         public Puzzle() {
         public boolean equals(Puzzle p){
              if(p == null) return false;
              for(int i =0;i<9;i++){
                   if(p.pzle!=pzle[i]){
                        return false;
              return true;
         public String toString(){
              return pzle[0] + "\t" + pzle[1] + "\t" + pzle [2] + "\n" +
                        pzle[3] + "\t" + pzle[4] + "\t" + pzle [5] + "\n" +
                        pzle[6] + "\t" + pzle[7] + "\t" + pzle [8] + "\n";
         public String printSolution(){
              String ret ="";
              Puzzle st = parent;
              while(st!=null){
                   ret = st + "\n=======================\n" + ret;
                   st = st.parent;
              ret=ret+this;
              return ret;
         public ArrayList<Puzzle> successors(){
              ArrayList<Puzzle> succ = new ArrayList<Puzzle>();
              int b = blank;
              if (((b-1) % 3) != 2 && b!=0) {
              Puzzle np1 = new Puzzle();
              np1.parent = this;
              np1.pzle = new int[9];
              for(int i =0;i<9;i++){
                   np1.pzle[i] = pzle[i];
              np1.pzle[b] = np1.pzle[b-1]; np1.pzle[b-1] = 0;
              np1.blank = b-1;
              if(!np1.equals(this.parent)){
              succ.add(np1);
              if (((b+1) % 3) != 0) {
              Puzzle np2 = new Puzzle();
              np2.parent = this;
              np2.pzle = new int[9];
              for(int i =0;i<9;i++){
                   np2.pzle[i] = pzle[i];
              np2.pzle[b] = np2.pzle[b+1]; np2.pzle[b+1] = 0;
              np2.blank = b+1;
              if(!np2.equals(this.parent)){
                   succ.add(np2);
              if (b-3 >= 0) {
              Puzzle np3 = new Puzzle();
              np3.parent = this;
              np3.pzle = new int[9];
              for(int i =0;i<9;i++){
                   np3.pzle[i] = pzle[i];
              np3.pzle[b] = np3.pzle[b-3]; np3.pzle[b-3] = 0;
              np3.blank = b-3;
              if(!np3.equals(this.parent)){
                   succ.add(np3);
              if (b+3 < 9) {
              Puzzle np4 = new Puzzle();
              np4.parent = this;
              np4.pzle = new int[9];
              for(int i =0;i<9;i++){
                   np4.pzle[i] = pzle[i];
              np4.pzle[b] = np4.pzle[b+3]; np4.pzle[b+3] = 0;
              np4.blank = b+3;
              if(!np4.equals(this.parent)){
                   succ.add(np4);
              return succ;
         The code for the DFS is      public static boolean DFS(Puzzle p, Puzzle goal, ArrayList<Puzzle> closed){
         if(p.equals(goal)){
              sol=p;
              return true;
         for(Puzzle pz : closed){
                   if(pz.equals(p)){
                        return false;
         closed.add(p);
                        //Generate all possible puzzles that can be attained
                        ArrayList<Puzzle> succ = p.successors();
                        for(Puzzle puz : succ){
                             if(DFS(puz,goal,closed)){ return true;}
              return false;
    }The problem is that when i run this on say the following start and goal:          Puzzle startP = new Puzzle(5,4,0,6,1,8,7,3,2);
              Puzzle goalP =new Puzzle(1,2,3,8,0,4,7,6,5);
              ArrayList<Puzzle> closed = new ArrayList<Puzzle>();
              startP.parent=null;
              boolean t = DFS(startP,goalP,closed);5-4-0
    6-1-8
    7-3-2 
    start and goal
    1-2-3
    8-0-4
    7-6-5
    it first takes foreever which is expected but it There should be 9! possible states correct? If I print out the size of the closed array (already seen states) it gets up to about 180000 and then returns with no solution found. But this is well under the 9! possible states...
    Its hard to know whats wrong and if it is even wrong.. but could someone please look at my code and see if something is off?
    I dont think the successor generator is wrong as I tested the blank in every space and it got the correct successors.
    Any ideas?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

    Puzzle(int p1,int p2,int p3,int p4,int p5, int p6, int p7, int p8, int p9){
              pzle = new int[9];
              pzle[0] = p1; if(p1==0){ blank=0;}
              pzle[1] = p2; if(p2==0){ blank=1;}
              pzle[2] = p3; if(p3==0){ blank=2;}
              pzle[3] = p4; if(p4==0){ blank=3;}
              pzle[4] = p5; if(p5==0){ blank=4;}
              pzle[5] = p6; if(p6==0){ blank=5;}
              pzle[6] = p7; if(p7==0){ blank=6;}
              pzle[7] = p8; if(p8==0){ blank=7;}
              pzle[8] = p9; if(p9==0){ blank=8;}
         }vs
    Puzzle(int...puzzle) {
      assert puzzle.length == 9;
      this.puzzle = Arrays.copyOf(puzzle, 9);
      for (int blank = 0; blank < 9; ++blank) if (puzzle[blank] == 0) break;
      // check values are 0...8
      Arrays.sort(puzzle); // sorts the original
      for (int i = 0; i < 9; ++i) assert puzzle[i] == i;
    Does anyone know if there are any simple applets or programs that do 8 Puzzle on any given start and finish state? Just to see the expected results.Not off hand, but you can always generate your starting state by moving backwards from the finish state.
    Also, I dont know..but are there some instances of an 8 Puzzle that cannot be solved at all?? IIRC, you can't transform 123 to 132 leaving the remainder unchanged, though I haven't checked.

  • When to go for Breadth first search over depth first search

    hi,
    under which scenarios breadth first search could be used and under which scenarios depth first search could be used?
    what is the difference between these two searches?
    Regards,
    Ajay.

    No real clear-cut rule for when to use one over the other. It depends on the nature of your search and where you would prefer to find results.
    The difference is that in breadth-first you first search all immidiate neighbours before searching their neighbours (sort of like preorder traversal). Whereas in depth-first you search some random (or otherwise selected) neighbour and then a neighbour of that node until you can't go deeper (i.e., you've searched a neighbour that has no other neighbours). This probably isn't a very clear explanation, perhaps you'll find this more helpful: http://www.ics.uci.edu/~eppstein/161/960215.html
    If you would prefer to find results closer to the origin node, breadth first would be better. If you would prefer to find results further away use depth first.

  • Depth First Search, Breadth First Search

    BANNER
    Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Prod
    PL/SQL Release 10.2.0.5.0 - Production
    CORE     10.2.0.5.0     Production
    TNS for Linux: Version 10.2.0.5.0 - Production
    NLSRTL Version 10.2.0.5.0 - Production
    I
    have this table that form a tree where record with column value 'more_left' 0 is located more left than 1 (for example, record with id 2 has a parent id 1 and more left than record with id 7 that also has parent id 1):
    with t as(
      select 2 id,1 parent_id,0 most_left from dual
      union all
      select 7 id,1 parent_id,1 most_left from dual
      union all
      select 8 id,1 parent_id,2 most_left from dual
      union all
      select 3 id,2 parent_id,0 most_left from dual
      union all
      select 6 id,2 parent_id,1 most_left from dual
      union all
      select 9 id,8 parent_id,0 most_left from dual
      union all
      select 12 id,8 parent_id,1 most_left from dual
    union all
      select 4 id,3 parent_id,0 most_left from dual
      union all
      select 5 id,3 parent_id,1 most_left from dual
    union all
      select 10 id,9 parent_id,0  most_left from dual
      union all
      select 11 id,9 parent_id,1 most_left from dual
    select * from t;The problem is to show all the ids, using Breadth First Search and Depth First Search. Tx, in advance.
    Edited by: Red Penyon on Apr 12, 2012 3:39 AM

    Hi,
    I fail to understand how comes there is no row for ID=1 ?
    The topmost parent (the root) should be in the table also.
    For 11g, this would work (as long as the root is in the table) :Scott@my11g SQL>l
      1  WITH t AS
      2       (SELECT 1 ID, 0 parent_id, 0 most_left
      3          FROM DUAL
      4        UNION ALL
      5        SELECT 2 ID, 1 parent_id, 0 most_left
      6          FROM DUAL
      7        UNION ALL
      8        SELECT 7 ID, 1 parent_id, 1 most_left
      9          FROM DUAL
    10        UNION ALL
    11        SELECT 8 ID, 1 parent_id, 2 most_left
    12          FROM DUAL
    13        UNION ALL
    14        SELECT 3 ID, 2 parent_id, 0 most_left
    15          FROM DUAL
    16        UNION ALL
    17        SELECT 6 ID, 2 parent_id, 1 most_left
    18          FROM DUAL
    19        UNION ALL
    20        SELECT 9 ID, 8 parent_id, 0 most_left
    21          FROM DUAL
    22        UNION ALL
    23        SELECT 12 ID, 8 parent_id, 1 most_left
    24          FROM DUAL
    25        UNION ALL
    26        SELECT 4 ID, 3 parent_id, 0 most_left
    27          FROM DUAL
    28        UNION ALL
    29        SELECT 5 ID, 3 parent_id, 1 most_left
    30          FROM DUAL
    31        UNION ALL
    32        SELECT 10 ID, 9 parent_id, 0 most_left
    33          FROM DUAL
    34        UNION ALL
    35        SELECT 11 ID, 9 parent_id, 1 most_left
    36          FROM DUAL
    37  )
    38  select
    39  rt
    40  ,listagg(id,'-') within group (order by lvl,id) BFS
    41  ,listagg(id,'-') within group (order by pth,lvl) DFS
    42  from (
    43  SELECT id, connect_by_root(id) rt, sys_connect_by_path(most_left,'-') pth, level lvl, most_left
    44        FROM  t
    45  CONNECT by nocycle  prior ID = parent_id
    46  START WITH parent_id = 0
    47  )
    48* group by rt
    Scott@my11g SQL>/
            RT BFS                            DFS
             1 1-2-7-8-3-6-9-12-4-5-10-11     1-2-3-4-5-6-7-8-9-10-11-12But as long as you're 10g, that is no real help.
    I'll try to think of a way to get that with 10g.
    10g solution for DFS :Scott@my10g SQL>l
      1  WITH t AS
      2  (
      3       SELECT 1 ID, 0 parent_id, 0 most_left FROM DUAL UNION ALL
      4       SELECT 2 ID, 1 parent_id, 0 most_left FROM DUAL UNION ALL
      5       SELECT 7 ID, 1 parent_id, 1 most_left FROM DUAL UNION ALL
      6       SELECT 8 ID, 1 parent_id, 2 most_left FROM DUAL UNION ALL
      7       SELECT 3 ID, 2 parent_id, 0 most_left FROM DUAL UNION ALL
      8       SELECT 6 ID, 2 parent_id, 1 most_left FROM DUAL UNION ALL
      9       SELECT 9 ID, 8 parent_id, 0 most_left FROM DUAL UNION ALL
    10       SELECT 12 ID, 8 parent_id, 1 most_left FROM DUAL UNION ALL
    11       SELECT 4 ID, 3 parent_id, 0 most_left FROM DUAL UNION ALL
    12       SELECT 5 ID, 3 parent_id, 1 most_left FROM DUAL UNION ALL
    13       SELECT 10 ID, 9 parent_id, 0 most_left FROM DUAL UNION ALL
    14       SELECT 11 ID, 9 parent_id, 1 most_left FROM DUAL
    15  )
    16  select max(pth) DFS
    17  from (
    18  select sys_connect_by_path(id,'-') pth
    19  from (
    20  select id,pth,lvl,most_left, row_number() over (order by pth, lvl) rn
    21  from (
    22  select id, sys_connect_by_path(most_left,'-') pth, level lvl, most_left
    23  from t
    24  CONNECT by nocycle  prior ID = parent_id
    25  START WITH parent_id = 0
    26  )
    27  order by pth, lvl
    28  )
    29  connect by prior rn= rn-1
    30  start with rn=1
    31* )
    Scott@my10g SQL>/
    DFS
    -1-2-3-4-5-6-7-8-9-10-11-12------
    10g solution for BFS :Scott@my10g SQL>l
      1  WITH t AS
      2  (
      3       SELECT 1 ID, 0 parent_id, 0 most_left FROM DUAL UNION ALL
      4       SELECT 2 ID, 1 parent_id, 0 most_left FROM DUAL UNION ALL
      5       SELECT 7 ID, 1 parent_id, 1 most_left FROM DUAL UNION ALL
      6       SELECT 8 ID, 1 parent_id, 2 most_left FROM DUAL UNION ALL
      7       SELECT 3 ID, 2 parent_id, 0 most_left FROM DUAL UNION ALL
      8       SELECT 6 ID, 2 parent_id, 1 most_left FROM DUAL UNION ALL
      9       SELECT 9 ID, 8 parent_id, 0 most_left FROM DUAL UNION ALL
    10       SELECT 12 ID, 8 parent_id, 1 most_left FROM DUAL UNION ALL
    11       SELECT 4 ID, 3 parent_id, 0 most_left FROM DUAL UNION ALL
    12       SELECT 5 ID, 3 parent_id, 1 most_left FROM DUAL UNION ALL
    13       SELECT 10 ID, 9 parent_id, 0 most_left FROM DUAL UNION ALL
    14       SELECT 11 ID, 9 parent_id, 1 most_left FROM DUAL
    15  )
    16  select max(pth) BFS
    17  from (
    18  select sys_connect_by_path(id,'-') pth
    19  from (
    20  select id,pth,lvl,most_left, row_number() over (order by lvl, pth) rn
    21  from (
    22  select id, sys_connect_by_path(most_left,'-') pth, level lvl, most_left
    23  from t
    24  CONNECT by nocycle  prior ID = parent_id
    25  START WITH parent_id = 0
    26  )
    27  order by lvl, pth
    28  )
    29  connect by prior rn= rn-1
    30  start with rn=1
    31* )
    Scott@my10g SQL>/
    BFS
    -1-2-7-8-3-6-9-12-4-5-10-11There might certainly have better ways...

  • Depth First Search w/o Recursion

    I am trying to use Depth First Search for 2-D maze, and I was just wondering if there was a straight forward and easy way of doing DFS of a maze without using recursion. Or is recursion the really only way you do DFS without invoking a lot of messy variables to hold temporary information.

    itereation instead of recursion...can you be a little more discriptive.
    For recursion I can understand how it works because when you pop out of one recursive cycle you got to the next command. So basically
    move{
    if you can
    go left
    move()
    go right
    move()
    go up
    move()
    go down
    move()
    else
    pop out of recursion
    hopefully this pseudocode makes some sense. But absically lets say with my maze I go right 3 times then can't go right anymore...well when that happens it will try to go right, because after calling move() under "go left" the next step would just be to go left. But I don't see how this can be done iteratively. If somebody can explain it pseudocode that would be cool too.

  • Depth first search tree

    Hi,
    I have stored some states in a vector (States are numbers). In my code i have printed out the parent nodes, the 2 elements after the parent nodes are there child.
    The element placed at position 0 in the vector is the root. I do not know how to implement a depth first search tree to address unreachable node. In this case, parent node 5 is unreachable, from other nodes. But i do not know how to do this. I have spent ages reading tutorials/ book, but i cant seem to convert this knowledge into java. My code is very short and therefore easy to understand
    import java.awt.*;
    import java.util.*;
    public class Vec{
    public static void main(String argv[]){
        Vec v = new Vec();
        v.remove();
        }//End of main
    public void remove(){
            Vector mv = new Vector();
            //Note how a vector can store objects
            //of different types
            mv.addElement(1);  // root and parent node of 2 elements below
            mv.addElement(2);  // child of above
            mv.addElement(1);  // child of above
            mv.addElement(2);  // parent of 2 elements below
            mv.addElement(4);
            mv.addElement(2);
            mv.addElement(3); // parent of 2 elements below
            mv.addElement(1);
            mv.addElement(3);
            mv.addElement(4); // parent of 2 elements below
            mv.addElement(3);
            mv.addElement(4);
            mv.addElement(5);  // parent of 2 elements below
            mv.addElement(2);
            mv.addElement(4);
    // below identifys the parent nodes for you, but doesnt store them as parent nodes
                    for(int i=0; i< mv.size(); i++){
            if (i % 3 == 0)
                      System.out.println(mv.elementAt(i));
       }//End of amethod
            

    Ah ok, it's a graph and not a tree. In that case don't use the tree-code I posted, but model your graph as an adjacency matrix (AM) [1]. The AM for the graph you posted in reply #5 would look like this:
    Node | 1  2  3  4  5
    -----+--------------
       1 | 1  1  0  0  0
         |
       2 | 0  1  0  1  0
         |
       3 | 1  0  1  0  0
         |
       4 | 0  0  1  1  0
         |
       5 | 0  1  1  0  0You can implement this by using a simple 2D array of integers like this:class Graph {
        private int[][] adjacencyMatrix;
        public Graph(int numNodes) {
            adjacencyMatrix = new int[numNodes][numNodes];
        public void addEdge(int from, int to) {
            adjacencyMatrix[from-1][to-1] = 1;
        public boolean isReachable(Integer start, Integer goal) {
            // your algorithm here
            return false;
        public String toString() {
            StringBuilder strb = new StringBuilder();
            for(int i = 0; i < adjacencyMatrix.length; i++) {
                int[] row = adjacencyMatrix;
    strb.append((i+1)+" | ");
    for(int j = 0; j < row.length; j++) {
    strb.append(adjacencyMatrix[i][j]+" ");
    strb.append('\n');
    return strb.toString();
    public static void main(String[] args) {
    Graph graph = new Graph(5);
    graph.addEdge(1, 1);
    graph.addEdge(1, 2);
    graph.addEdge(2, 2);
    graph.addEdge(2, 4);
    graph.addEdge(3, 1);
    graph.addEdge(3, 3);
    graph.addEdge(4, 3);
    graph.addEdge(4, 4);
    graph.addEdge(5, 2);
    graph.addEdge(5, 3);
    System.out.println("Adjacency Matrix:\n"+graph);
    System.out.println("Is node 5 reachable from node 1? "+
    graph.isReachable(new Integer(1), new Integer(5))); // should be false
    System.out.println("Is node 1 reachable from node 5? "+
    graph.isReachable(new Integer(5), new Integer(1))); // should be true: a path exists from 5 -> 3 -> 1 and 5 -> 2 -> 4 -> 3 -> 1
    Good luck.
    [1]
    http://en.wikipedia.org/wiki/Adjacency_matrix
    http://mathworld.wolfram.com/AdjacencyMatrix.html

  • Depth first search and breadth first search

    can anyone help for this program. can anyone give me a program for this without using an applet.
    thanks!!!

    can anyone help for this program. can anyone give me a
    program for this without using an applet.
    thanks!!!What are you talking about? What program? Depth-first means you recursively search from root to the first leaf, then go up one level, go down as far as you can, repeat. Breadth-first means you search every node on each level before going on to the next level.

  • Is SQR #include a depth first search or breadth first search alrgorithm

    Just wondering if SQR compiler is a dfs or bfs algorithm? I am guessing a dfs since includes can show up at the beginning or end of the sqr or sqc definition but position is relevant. So a few questions that branch off of that one.
    I have successfully included file filea.sqc and fileb.sqc in myfile.sqr, then included file subfile.sqc in both filea.sqc and fileb.sqc. There seemed to be no error message, so I am wondering how the file include works. I would think from a compiler point of view, if we included the same procedure or function twice, we should do one of three things - ignore the second instance (do nothing), override the first instance, or throw an error.
    So, anyone know how the compiler stack is built?

    The documentation doesn't help much, but if you want to prevent an include from being loaded more than once, you should be able to use a combination of compiler directives, i.e. #IFNDEF and #DEFINE.
    In your example, if you code subfile.sqc like
    #IFNDEF SUBFILE_INCLUDED
    #DEFINE SUBFILE_INCLUDED Y
    begin-procedure subfile_proc
    #ENDIFthen you should only get one copy of the code between the #IFNDEF-#ENDIF statements.
    You could probably use something similar to test how SQR handles multiple includes of the same file. Try something like
    #IFDEF SUBFILE_INCLUDED
    Display 'Subfile included twice'
    #ENDIF
    #IFNDEF SUBFILE_INCLUDED
    #DEFINE SUBFILE_INCLUDED Y
    #ENDIFand see if the message is displayed.
    Regards,
    Bob

  • DEPTH FIRST SEARCH

    hi,
    could u help me i want to read tree(node and edges betwwen node) i want to use DFS but it's unclear how to DFS to read data stored in file
    do I need to store tree information in file or create it in the same jave
    could u help me please

    Melanie_Green wrote:
    ali99099 wrote:
    hi,
    could u help me i want to read tree(node and edges betwwen node) i want to use DFS but it's unclear how to DFS to read data stored in file
    do I need to store tree information in file or create it in the same jave
    could u help me pleaseI don't think I can explain DFS better then the 1 quadrillion sites out there, however I could sum up the algorithm in less then a sentence. Left most child before Right child then Parent, rinse repeat.
    You also mention data is stored in a file, as we have NFC what type of data is stored in the file or how the data is stored I can not give you an answer.
    p.s. Sentences start with a capital letter.
    Melp.s. "then" is an adverb, you want the conjunction "than"

  • Depth First Search (LIFO) - stacked based

    Hi Everyone, 
    Herewith attached my workable Breadth fist search (FIFO) code - queue based. Now, I would like to change to LIFO - stacked based. 
    Anyone here can give some guideline on it?
    Many thanks.  
    Attachments:
    Version 1.zip ‏64 KB

    I've changed it to queue FIFO. but in the end, it won't show a complete path to reach the destination point. However, queue stack LIFO can show a complete path from starting point till the goal point.
    Does that means queue FIFO cannot be used in finding a complete path out? Is there any possible way for this method to find its way out? 
    Herewith attached queue FIFO. 
    Attachments:
    Queue FIFO.zip ‏64 KB

  • Transfer values from one search help to another

    Is it possible to transfer values from screen of one search help to another. For example if I have the vendor master search help (XK02) and I go to the elementary search help "Vendors by Material" . On this screen I enter some data in the Material number field. Now  when I do an F4 on the material field on this search help I will get the collective search help for Material number. My requirement is to have the material number from the first search help to be carried over to the second search help. Is there any way possible. I am manipulating my custom search helps through the search help exits(fetching data etc).

    Hi Deepak,
    Not very sure, but I think if you write code in search help exit, this may be possible. Use GET PARAMETER... SET .. in the exit to pass the values between search help.
    Regards,
    Atish

  • Search help for a field with no dictionary reference

    Hi!
    I have created a serchhelp (see se11)
    there  are two included search helps nested. Each one
    has it own serch help exit. First search help has two
    fields and one of them is a character field (CHAR030).
    It hasn't a reference dictionary table in that case.
    How can I assign a search help esspecially for this field.
    Its values are stored inside a internal table.
    Regards
    ertas

    Hi,
    I think you need to attach a search help to a field programitically .
    Below is one sample code.
    REPORT  ZMSTR0022.
    CONSTANTS: C_FORM_NAME TYPE TDSFNAME VALUE 'ZMST_PER_APPL'.
    TABLES :ZMST_PERMIT.
    TYPE-POOLS: SLIS.
    TYPE-POOLS :VRM.                           "Value Request Manager
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-023.
    SELECT-OPTIONS:S_PIDNUM FOR ZMST_PERMIT-ZPIDNUM ,
                   S_ENGDSC FOR ZMST_PERMIT-ZENGDSC NO INTERVALS LOWER CASE,
                   S_ARBDSC FOR ZMST_PERMIT-ZARBDSC NO INTERVALS LOWER CASE,
                   S_TARIFF FOR ZMST_PERMIT-ZTARIFF NO INTERVALS,
                   S_PERNUM FOR ZMST_PERMIT-ZPERNUM NO INTERVALS,
                   S_ARRPRT FOR ZMST_PERMIT-ZARRPRT NO INTERVALS MATCHCODE OBJECT ZMST_PORTS.
    PARAMETER:P_PERTYP(2) TYPE C AS LISTBOX VISIBLE LENGTH 20.
    SELECTION-SCREEN END OF BLOCK B1.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PIDNUM-LOW.
      W_NAME2 = 'S_PIDNUM-LOW'.
      W_NAME1 = 'ZPIDNUM'.
      PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PIDNUM-HIGH.
      W_NAME2 = 'S_PIDNUM-HIGH'.
      W_NAME1 = 'ZPIDNUM'.
      PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_ENGDSC-LOW.
      W_NAME2 = 'S_ENGDSC'.
      W_NAME1 = 'ZENGDSC'.
      PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_ARBDSC-LOW.
      W_NAME2 = 'S_ARBDSC'.
      W_NAME1 = 'ZARBDSC'.
      PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_TARIFF-LOW.
      W_NAME2 = 'S_TARIFF'.
      W_NAME1 = 'ZTARIFF'.
      PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PERNUM-LOW.
      W_NAME2 = 'S_PERNUM'.
      W_NAME1 = 'ZPERNUM'.
      PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
    *&      Form  F4_HELP
          text
    -->  p1        text
    <--  p2        text
    FORM F4_HELP USING: W_VAR TYPE DFIES-FIELDNAME
                        W_VAR1 TYPE HELP_INFO-DYNPROFLD .
    Fetching data from zmst_permit for F4 help on PERMIT ID No.--
      IF IT_PERMIT[] IS INITIAL.
        SELECT ZPIDNUM
               ZENGDSC
               ZARBDSC
               ZTARIFF
               ZPERNUM
               ZARRPRT
               ZEFFDT
               ZEXPDT
               FROM ZMST_PERMIT INTO CORRESPONDING FIELDS OF TABLE IT_PERMIT.
      ENDIF.
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          RETFIELD        = W_NAME1 " 'ZPIDNUM'
          DYNPPROG        = 'ZMSTR0022'
          DYNPNR          = SY-DYNNR
          DYNPROFIELD     = W_NAME2 "'S_PIDNUM'
          VALUE_ORG       = 'S'
        TABLES
          VALUE_TAB       = IT_PERMIT
        EXCEPTIONS
          PARAMETER_ERROR = 1
          NO_VALUES_FOUND = 2
          OTHERS          = 3.
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                                                    " F4_HELP
    I hope this will help you.
    Help children of U.N World Food Program by rewarding  points and encourage others to answer your queries.

  • Search Help Deep Level Accessibility

    Hi Experts,
    I have created a 3 search helps and all with an import paramters.
    From first search help selection field, if I press F4 on some field(having search help attached), it calls second search help and
    now on second search help I press F4 on some field(having search help attached) and it calls the third search help.
    Now at third search help, import paramters also has further search help attached but this third search help neither shows any F4 button on a field with search help nor F4 pressing response anything.
    Kindly suggest why at thrid level the selection paramters doesnot show search help even thought their data elements has it.
    Thanks
    Depesh

    thnx

  • Bound Search helps

    hi,
    i have two search helps and 2.search help is not enabled, because it will be enable when user choose a
    value from the first search help. Normally they are bound together but in WDA i can't do it.
    for example : 1.search help : A --> 2.search help : B,C,D can be eligible.
                               X --> 2.search help : Y,Z,T can be eligible.
    How can i do it?
    Thanks...

    Hi Adil,
    I think this will be posible through freely programmed value help.......
    below is the link for creating freely programmed value help
    link: http://help.sap.com/saphelp_nw04s/helpdata/en/47/9ef8cc9b5e3c5ce10000000a421937/frameset.htm
    after reading that link you will see that we have to create an used component for this help...... now wht you can do is you can create a context attribute for an interface node and pass the value from search help from main component to used component.... now depending on the value passed from you can implement the logic for search help which will depend on the value of search help one......
    regards
    pranav

  • Change Default choice of Elimentary search help in Collective Search Help

    Hi All,
    This might be very odd one but i am faced with such a requirement.
    In collective search help for eg in MM02 for material we click on a F4 for material master and it gives the list of various search help.   By default the last selected elimentary search help will be selected.
    My requirement is that by default only the first search help has to be displayed. 
    Any idea on how this can be achieved.
    Regards,
    G

    Hi NabheetMadan,
    I am aware of the concept of search help exit.  What i am looking for is how to influence the choice of default search help in the exit.
    Regards,
    Shankar

Maybe you are looking for

  • One mobile app finds my printer, another doesn't

    I have an HP Photosmart printer, and an iPad 2, so I decided to download the 2 HP apps (HP ePrint and AiO Remote). Well, the HP ePrint immediately located my printer, and I was able to link up to my GMail, and Cloud apps, etc., and everything worked

  • Cannot view new incoming email

    I can send mail to my wife's iBook from my MacBook and she can receive outside messages as well. The correct number of messages show up in the left hand inbox column but they don't show up and cannot be viewed in the message window. I can view them o

  • Using Variable Global in ADF BC

    Hi. i'm using ADF BC in middle tier and Client tier is form application , i want store username,password of user in their session to perform some action audit in multi form. But i don't known, is there a technical to do that? Thank!

  • E-Rec: Problem with set attribute 'POS_TITLE' in Requisition mgmt

    Hi All, In Component controller of 'ERC_REQ_MGMT' WD4A application, I just tried to set the posting title using the below code: DATA lo_nd_language        TYPE REF TO if_wd_context_node.     lo_nd_language = wd_context->get_child_node( name = wd_this

  • MIGO Document

    Hi, Material number is not updated in FI document when MIGO is posted with reference to PO as PO generated against a material. Please let me know. Additionally If the PO having more than 1 lines with different material numbers, when MIGO is carried t