二叉树的类:
//树的节点
struct Node
{
Node(int v = 0) :val(v),left(nullptr),right(nullptr) {};
int val;
Node *left;
Node *right;
};
中序遍历----递归版
//中序遍历----递归
void inorder_recursion(Node *node)
{
if (node)
{
if (node->left)
inorder_recursion(node->left);
cout << node->val << " ";
if (node->right)
inorder_recursion(node->right);
}
}
中序遍历----栈
//中序遍历
void inorder_stack2(Node* node)
{
if (!node)
return;
stack<Node*> inorder_s;
Node* temp = node;
while (node || !inorder_s.empty()) {
if (temp) {
inorder_s.push(temp);
temp = temp->left;
}
else
{
temp = inorder_s.top();
inorder_s.pop();
cout << temp->val << " ";
temp = temp->right;
}
}
}