2016-04-21 57 views
-1

如何檢測二叉樹中的循環。作爲下圖中的一個例子,節點5是非法節點。一種方法是找到邊和節點的數量。邊緣應該是n -1。如何檢測二叉樹中的循環

enter image description here

+0

請包括一些關於您正在使用的語言以及您目前嘗試使用的語言的信息。 –

+0

@Piyush - ref。到https://en.wikipedia.org/wiki/Binary_tree瞭解二叉樹的完整定義,我希望你知道。所以,如果每個節點最多有兩個孩子,那麼它就是一棵二叉樹。 –

+0

此外,你的問題並沒有被清除,就像你想要達到的目標以及你想要用哪種語言來完成。我可以用C++,C#和其他幾種語言編寫二進制樹的程序,但爲了更加清晰,請修改您的問題。 –

回答

0

你可以通過樹遍歷和檢查,如果每個家長都有兩個或更少數量的孩子,否則就不是一個二叉樹。

遞歸的方式:

flag = true; 
traverse(Node node){ 
    if(node == null || !flag) 
     return; 
    //Check for more than two children, if yes not binary tree, exit 
    if(node.getChilds().length > 2){ 
     flag = false; 
     return; 
    } 
    // Go through each nodes 
    for(Node child : node.getChilds()) { 
     traverse(child); 
    } 
} 

注:更好地將使用非遞歸的方式,在那裏你可以,只要你找到兩個以上的孩子退出循環。

+0

當一個子節點有兩個父節點時,它不會工作。我爲這個問題添加了一個圖片。 –