Java樹的遍歷方式有深度優(yōu)先遍歷和廣度優(yōu)先遍歷兩種。
深度優(yōu)先遍歷是先遍歷該節(jié)點的子節(jié)點,再遍歷該節(jié)點的兄弟節(jié)點,以此類推。這種遍歷方式通常用遞歸實現(xiàn),代碼如下:
public void dfs(TreeNode node) { if (node == null) { return; } System.out.print(node.val + " "); dfs(node.left); dfs(node.right); }
上述代碼中,先判斷節(jié)點是否為空,然后輸出該節(jié)點的值,接著遞歸遍歷該節(jié)點的左子樹和右子樹。
廣度優(yōu)先遍歷是先遍歷該節(jié)點的所有兄弟節(jié)點,再遍歷兄弟節(jié)點的子節(jié)點,以此類推。一般使用隊列實現(xiàn),代碼如下:
public void bfs(TreeNode root) { Queuequeue = new LinkedList<>(); if (root == null) { return; } queue.offer(root); while (!queue.isEmpty()) { TreeNode node = queue.poll(); System.out.print(node.val + " "); if (node.left != null) { queue.offer(node.left); } if (node.right != null) { queue.offer(node.right); } } }
上面的代碼中,先把根節(jié)點加入到隊列中,然后不斷從隊列中取出節(jié)點,輸出該節(jié)點的值,并把該節(jié)點的左子樹和右子樹加入到隊列中。這樣就可以實現(xiàn)廣度優(yōu)先遍歷。
上一篇python畫大白6
下一篇php link()