二叉樹遍歷

2021-08-29 22:37:33 字數 1271 閱讀 2439

/**

* 前序 深度優先

* lang

* @param node

*/public static void preorder1(treenode node)

if (!stack.empty())

} }/**

* 中序遍歷

* lang

* @param node

*/public static void midorder1(treenode node)

if (!stack.empty())

} }/**

* 後序遍歷

* 非遞迴

*/public static void posorder1(treenode node)

while (!stack1.empty() && stack2.peek() == i)

if (!stack1.empty())

} }/* * 層序遍歷 廣度優先

* 非遞迴

*/public static void levelorder1(treenode node)

queuequeue = new linkedlist<>();

queue.add(node);

while (queue.size() != 0)

if (node.right != null)

} }

給定乙個二叉樹, 找到該樹中兩個指定節點的最近公共祖先。

class solution 

while(root!=null)

stack.push(node);

node = node.left;

}if (!stack.empty())

} return list;

}}

上述方法會超過記憶體

解題思路:遞迴搜尋左右子樹,如果左子樹和右子樹都不為空,說明最近父節點一定在根節點。

反之,如果左子樹為空,說明兩個節點一定在右子樹;同理如果右子樹為空,說明兩個節點一定在左子樹。

public static treenode lowestcommonancestor3(treenode root, treenode p, treenode q) else else 

}// return left == null ? right : right == null ? left : root;

}

構建二叉樹 遍歷二叉樹

陣列法構建二叉樹 public class main public static void main string args 用陣列的方式構建二叉樹 public static void createbintree 把linkedlist集合轉成二叉樹的形式 for int j 0 j 最後乙個父節...

二叉樹遍歷

二叉樹的遍歷非常重要,但對已一棵比較複雜的樹,要寫出它的先 中 後序遍歷,往往不是那麼簡單,也很容易犯錯。這裡介紹一種比較直觀且不容易犯錯的方法。對於圖1所示的二叉樹,要寫出它的先 中 後序遍歷,往往很容易出錯。圖 1 其實,我們可以用圖2中的紅線描畫出二叉樹的輪廓。圖 2 而對於樹上的每乙個節點,...

二叉樹遍歷

描述 華為實習生招聘,有一道類似如下的題目 給出二叉樹,如圖1所示 圖 1 二叉樹 要求給出中序遍歷的結果。下面分別就前序遍歷 中序遍歷 後序遍歷進行分析。規律 前序遍歷 根在前 子樹在根後且左子樹比右子樹靠前 中序遍歷 根在中 左子樹在根左邊,右子樹在根右邊 後序遍歷 根在後 子樹在根前且左子樹比...