我在下面有這 3 種不同的遍歷方法,它們遍歷我的二叉搜索樹。我知道后序和中序遍歷都是從底部到根,但前序是從根到底部。既然遞歸是自下而上的,為什么要在前序遍歷上使用遞歸呢?我能找到的所有預(yù)購示例都使用遞歸。private void preOrder(BinaryNode<AnyType> t ) { if(isEmpty()){ System.out.println("Empty"); } if(t != null) { System.out.println(t.element); preOrder(t.left); preOrder(t.right); } } private void postOrder(BinaryNode<AnyType> t){ if(isEmpty()){ System.out.println("Empty"); } if (t != null) { postOrder(t.left); postOrder(t.right); System.out.println(t.element); } } private void inOrder(BinaryNode<AnyType> t) { if(isEmpty()){ System.out.println("Empty"); } if (t != null) { inOrder(t.left); System.out.println(t.element); inOrder(t.right); } }
1 回答

藍(lán)山帝景
TA貢獻(xiàn)1843條經(jīng)驗 獲得超7個贊
好吧,關(guān)鍵是當(dāng)我們打印樹的節(jié)點(diǎn)時。
后序:System.out.println
放置在所有遞歸調(diào)用之后,因此算法遍歷所有節(jié)點(diǎn)直到結(jié)束,然后開始打印它們。
對于預(yù)購情況,打印當(dāng)前節(jié)點(diǎn),然后處理子樹。
沒有像“遞歸自下而上或自上而下”這樣的規(guī)則。但是如果您在遞歸調(diào)用之前有一些代碼,它將自上而下執(zhí)行。如果您在遞歸調(diào)用后有一些代碼,它將自下而上執(zhí)行。
添加回答
舉報
0/150
提交
取消