欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

二叉树的前序、中序、后序、层序遍历(C++)

程序员文章站 2024-03-22 19:04:58
...
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */

前序遍历

void PreOrder(TreeNode* currentNode)
{
    if(currentNode)
    {
    	cout << currentNode -> val;
        PostOrder(currentNode->left);
        PostOrder(currentNode->right);
    }
}

中序遍历

void InOrder(TreeNode* currentNode)
{
    if(currentNode)
    {
        PostOrder(currentNode->left);
        cout << currentNode -> val;
        PostOrder(currentNode->right);
    }
}

后序遍历

void PostOrder(TreeNode* currentNode)
{
    if(currentNode)
    {
        PostOrder(currentNode->left);
        PostOrder(currentNode->right);
        cout << currentNode -> val;
    }
}

层序遍历

void LevalOrder(TreeNode* root, queue<TreeNode*> q)//层序遍历  显示一个之前先把其左右孩子放到队列里
{
    TreeNode* currentNode = root;
    cout << currentNode -> val;
    while(currentNode)
    {
        if(currentNode->left){
            q.push(currentNode->left);  //入队列
        }
        if(currentNode->right){
            q.push(currentNode->right); //入队列
        }
        if(q.empty())  return;
        currentNode=q.front();//将队列头记下,将左右孩子入队列
        q.pop();//出队头
    }
}
相关标签: 二叉树 C++