This commit is contained in:
krahets
2023-04-14 04:01:38 +08:00
parent cf431646e9
commit 4d318e8e6b
26 changed files with 469 additions and 295 deletions

View File

@@ -32,12 +32,12 @@ comments: true
// 初始化一个列表,用于保存遍历序列
List<Integer> list = new ArrayList<>();
while (!queue.isEmpty()) {
TreeNode node = queue.poll(); // 队列出队
list.add(node.val); // 保存节点值
TreeNode node = queue.poll(); // 队列出队
list.add(node.val); // 保存节点值
if (node.left != null)
queue.offer(node.left); // 左子节点入队
queue.offer(node.left); // 左子节点入队
if (node.right != null)
queue.offer(node.right); // 右子节点入队
queue.offer(node.right); // 右子节点入队
}
return list;
}
@@ -47,18 +47,18 @@ comments: true
```cpp title="binary_tree_bfs.cpp"
/* 层序遍历 */
vector<int> levelOrder(TreeNode* root) {
vector<int> levelOrder(TreeNode *root) {
// 初始化队列,加入根节点
queue<TreeNode*> queue;
queue<TreeNode *> queue;
queue.push(root);
// 初始化一个列表,用于保存遍历序列
vector<int> vec;
while (!queue.empty()) {
TreeNode* node = queue.front();
queue.pop(); // 队列出队
vec.push_back(node->val); // 保存节点值
TreeNode *node = queue.front();
queue.pop(); // 队列出队
vec.push_back(node->val); // 保存节点值
if (node->left != nullptr)
queue.push(node->left); // 左子节点入队
queue.push(node->left); // 左子节点入队
if (node->right != nullptr)
queue.push(node->right); // 右子节点入队
}
@@ -277,7 +277,8 @@ comments: true
```java title="binary_tree_dfs.java"
/* 前序遍历 */
void preOrder(TreeNode root) {
if (root == null) return;
if (root == null)
return;
// 访问优先级:根节点 -> 左子树 -> 右子树
list.add(root.val);
preOrder(root.left);
@@ -286,7 +287,8 @@ comments: true
/* 中序遍历 */
void inOrder(TreeNode root) {
if (root == null) return;
if (root == null)
return;
// 访问优先级:左子树 -> 根节点 -> 右子树
inOrder(root.left);
list.add(root.val);
@@ -295,7 +297,8 @@ comments: true
/* 后序遍历 */
void postOrder(TreeNode root) {
if (root == null) return;
if (root == null)
return;
// 访问优先级:左子树 -> 右子树 -> 根节点
postOrder(root.left);
postOrder(root.right);
@@ -307,8 +310,9 @@ comments: true
```cpp title="binary_tree_dfs.cpp"
/* 前序遍历 */
void preOrder(TreeNode* root) {
if (root == nullptr) return;
void preOrder(TreeNode *root) {
if (root == nullptr)
return;
// 访问优先级:根节点 -> 左子树 -> 右子树
vec.push_back(root->val);
preOrder(root->left);
@@ -316,8 +320,9 @@ comments: true
}
/* 中序遍历 */
void inOrder(TreeNode* root) {
if (root == nullptr) return;
void inOrder(TreeNode *root) {
if (root == nullptr)
return;
// 访问优先级:左子树 -> 根节点 -> 右子树
inOrder(root->left);
vec.push_back(root->val);
@@ -325,8 +330,9 @@ comments: true
}
/* 后序遍历 */
void postOrder(TreeNode* root) {
if (root == nullptr) return;
void postOrder(TreeNode *root) {
if (root == nullptr)
return;
// 访问优先级:左子树 -> 右子树 -> 根节点
postOrder(root->left);
postOrder(root->right);