import java.util。*;我想找到一棵樹是否是另一棵樹的子樹,並運行到ArrayList比較prolem
class TreeDemo
{
public static class Node
{
int val;
Node right, left;
Node(int val)
{
this.val = val;
}
}
public static class Tree{
ArrayList<Node> list = new ArrayList<>();
Node root;
void insert(int val)
{
if (root == null)
{
root = new Node(val) ;
}
else{
insertNode(val,root);
}
}
void insertNode(int val, Node root)
{
if (root == null)
{
root = new Node(val) ;
}
if (val < root.val)
{
if(root.left == null)
{
root.left = new Node(val) ;
}
else
{
insertNode(val, root.left);
}
}
else if (val > root.val)
{
if(root.right == null)
{
root.right = new Node(val) ;
}
else
{
insertNode(val, root.right);
}
}
}
ArrayList<Node> preOrder(Node root)
{
if(root!=null)
{
System.out.println(root.val);
list.add(root);
}
if(root.left!=null)
{
preOrder(root.left);
}
if(root.right!=null)
{
preOrder(root.right);
}
return list;
}
}
public static void main(String[] args)
{
Tree t= new Tree();
t.insert(5);
t.insert(3);
t.insert(7);
t.insert(2);
t.insert(4);
t.insert(1);
t.insert(7);
t.insert(9);
t.insert(6);
Tree r = new Tree();
r.insert(3);
r.insert(2);
r.insert(4);
r.insert(1);
List<Node> a = t.preOrder(t.root);
System.out.println("----------------------------------------------------");
List<Node> b = r.preOrder(r.root);
if (a.containsAll(b))
這條線似乎不適合我或我相信我可能犯了一些我不能注意到的錯誤。
{
System.out.println("contains");
}
else
{
System.out.println("does not contain");
}
}
}
這只是一個簡單的樹實現中,我將所有的節點,因爲他們遇到到一個列表,然後檢查是否較小的字符串,因爲這將使我們更小的樹將一個子大串是更大的樹 感謝大家對他們的幫助的子樹...
什麼不工作?例外?錯誤的輸出?如果是這樣,它是什麼,預期產出是多少? – 2015-03-24 21:39:13
所以列表b包含在列表a中,但ContainsAll給我一個假... m不知道我在哪裏犯錯... – Mudit 2015-03-24 21:41:16