1.栈和队列
2.链表问题
3.二叉树问题
3.1 用 递归和非递归 方式实现 二叉树先序、中序和后序遍历 (C++)
#include "pch.h"
#include <iostream>
#include <stack>
using namespace std;
class Node {
public:
int value;
Node *left;
Node *right;
Node(int data):value(data) {
}
};
// 先序遍历 根 左 右
void preOrderRecur(Node *head) {
if (head == nullptr)
return;
cout << head->value;
preOrderRecur(head->left);
preOrderRecur(head->right);
}
// 中序遍历 左 根 右
void inOrderRecur(Node *head) {
if (head == nullptr)
return;
inOrderRecur(head->left);
cout << head->value;
inOrderRecur(head->right);
}
// 后序遍历 左 右 根
void posOrderRecur(Node *head)
{
if (head == nullptr)
return;
posOrderRecur(head->left);
posOrderRecur(head->right);
cout << head->value;
}
void preOrderUnRecur(Node* head) {
if (head != nullptr)
{
stack<Node*> stk;
stk.push(head);
while (!stk.empty())
{
head = stk.top();
stk.pop();
cout << head->value;
if (head->right != nullptr)
stk.push(head->right);
if (head->left != nullptr)
stk.push(head->left);
}
}
}
void inOrderUnRecur(Node* head) {
if (head != nullptr)
{
stack<Node*> stk;
while (!stk.empty() || head != nullptr)
{
if (head != nullptr)
{
stk.push(head);
head = head->left;
}
else
{