File tree Expand file tree Collapse file tree 2 files changed +66
-1
lines changed 
LeetCodePrj/Java/leetcode/medium/page2 Expand file tree Collapse file tree 2 files changed +66
-1
lines changed Original file line number Diff line number Diff line change 1+ package  leetcode .medium .page2 ;
2+ 
3+ import  java .util .*;
4+ 
5+ public  class  CloneGraph  {
6+     static  class  Node  {
7+         public  int  val ;
8+         public  List <Node > neighbors ;
9+ 
10+         public  Node () {
11+             val  = 0 ;
12+             neighbors  = new  ArrayList <Node >();
13+         }
14+ 
15+         public  Node (int  _val ) {
16+             val  = _val ;
17+             neighbors  = new  ArrayList <Node >();
18+         }
19+ 
20+         public  Node (int  _val , ArrayList <Node > _neighbors ) {
21+             val  = _val ;
22+             neighbors  = _neighbors ;
23+         }
24+     }
25+ 
26+     public  Node  cloneGraph (Node  node ) {
27+         if  (node  == null ) {
28+             return  null ;
29+         }
30+ 
31+         Map <Node , Node > visited  = new  HashMap <>();
32+         Queue <Node > queue  = new  LinkedList <>();
33+         queue .offer (node );
34+         Node  res  = new  Node (node .val );
35+         visited .put (node , res );
36+ 
37+         while  (!queue .isEmpty ()) {
38+             Node  oldNode  = queue .poll ();
39+             Node  newNode  = visited .getOrDefault (oldNode , new  Node (oldNode .val ));
40+ 
41+             for  (Node  oldSubNode  : oldNode .neighbors ) {
42+                 Node  newSubNode  = null ;
43+                 if  (visited .containsKey (oldSubNode )) {
44+                     newSubNode  = visited .get (oldSubNode );
45+                 } else  {
46+                     queue .offer (oldSubNode );
47+                     newSubNode  = new  Node (oldSubNode .val );
48+                     visited .put (oldSubNode , newSubNode );
49+                 }
50+                 newNode .neighbors .add (newSubNode );
51+             }
52+         }
53+ 
54+         return  res ;
55+     }
56+ }
Original file line number Diff line number Diff line change 11package  leetcode .medium .page2 ;
22
33import  leetcode .common .ListNode ;
4- import  leetcode .hard .page2 .LFUCache ;
54import  org .junit .jupiter .api .Test ;
65
6+ import  java .util .ArrayList ;
7+ 
78public  class  MediumPage2  {
89    @ Test 
910    public  void  testSortList () {
@@ -23,4 +24,12 @@ public void testEvalRPN() {
2324        EvaluateReversePolishNotation  evalRPN  = new  EvaluateReversePolishNotation ();
2425        System .out .println (evalRPN .evalRPN (input ));
2526    }
27+ 
28+     @ Test 
29+     public  void  testCloneMap () {
30+         CloneGraph .Node  node  = new  CloneGraph .Node ();
31+         node .neighbors  = new  ArrayList <>();
32+         CloneGraph  cloneGraph  = new  CloneGraph ();
33+         System .out .println (cloneGraph .cloneGraph (node ));
34+     }
2635}
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments