遞迴下降法二叉樹解析

2021-10-02 23:18:42 字數 831 閱讀 2224

參考: 

編寫遞迴下降語法分析器的一般步驟:

使用乙個索引來記錄當前掃瞄的位置。通常將它做成乙個整數字段。

為每個非終結符編寫乙個方法。

如果乙個非終結符有超過乙個的產生式,則在這個方法中對採用哪個產生式進行分支**

處理單一產生式時,遇到正確終結符則將第一步建立的掃瞄索引位置向前移動;如遇到非終結符則呼叫第二步中建立的相應方法。

如果需要產生解析的結果(比如本例中的二叉樹),在方法返回之前將它構造出來。

如上如所示的二叉樹用字串表示為a(b(,c(,),d(,)),使用遞迴下降的方式解析如下

public class parsetree 

@override

public string tostring()

}private int index;

private char chars;

public parsetree(char chars)

public node parse() else if (lookaheadchar == ',' || lookaheadchar == ')')

throw new runtimeexception("syntax error");

}private static boolean isletter(char ch)

public static void main(string args)

}

二叉樹遞迴

我們來看一下二分搜尋樹的釋放,這就是乙個典型的遞迴問題 function destroy node 這個遞迴包括兩個部分,乙個是遞迴終止條件,乙個是遞迴的執行。我們知道遞迴是不斷地將當前函式壓入函式棧,如果沒有if node null return這個終止條件,當函式棧被壓滿之後就會發生棧溢位 棧的...

遞迴二叉樹

1 基本概念 1 節點 結點包含資料和指向其它節點的指標。2 根節點 樹第乙個結點稱為根節點。3 結點的度 結點擁有的子節點個數。4 葉節點 沒有子節點的節點 度為0 5 父子節點 乙個節點father指向另乙個節點child,則child為孩子節點,father為父親節點。6 兄弟節點 具有相同父...

二叉樹 遞迴

完全二叉樹 只有最後一層不滿,其餘節點都有兩個孩子,並且最後一層的節點從左向右排列,如下圖 擴充二叉樹 每個實節點都有兩個孩子,如圖 類似dfs cout data preorder recursion bt leftchild preorder recursion bt rightchild vo...