C++输出二叉树先序序列前k个结点的值

,建立一棵采用二叉链表结构存储的二叉树,C++输出二叉树先序序列前k个结点的值


#include <iostream>
#include <vector>

using namespace std;

// 二叉树结点结构体
struct TreeNode {
    int val;
    TreeNode* left;
    TreeNode* right;
    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};

// 先序遍历二叉树,并将前k个结点的值存入vector中
void preorder(TreeNode* root, int k, vector<int>& result) {
    if (root == nullptr || k <= 0) {
        return;
    }
    result.push_back(root->val);
    preorder(root->left, k-1, result);
    preorder(root->right, k-1, result);
}

int main() {
    // 构造二叉树
    TreeNode* root = new TreeNode(1);
    root->left = new TreeNode(2);
    root->right = new TreeNode(3);
    root->left->left = new TreeNode(4);
    root->left->right = new TreeNode(5);

    // 输出前k个结点的先序遍历序列
    int k = 3;
    vector<int> result;
    preorder(root, k, result);
    for (int i = 0; i < result.size(); i++) {
        cout << result[i] << " ";
    }
    cout << endl;

    return 0;
}

在上面的代码中,我们定义了一个TreeNode结构体表示二叉树的结点,并实现了一个preorder函数来进行二叉树的先序遍历,并将前k个结点的值存入vector中。最后在main函数中构造了一棵二叉树,并调用preorder函数输出前k个结点的先序遍历序列。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/686941
  • 这篇博客也不错, 你可以看下C++算法输出链表倒数第k个元素的代码
  • 除此之外, 这篇博客: C++ 链表题型中的 2.链表的倒数第k个结点 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    /*
    struct ListNode {
    	int val;
    	struct ListNode *next;
    	ListNode(int x) :
    			val(x), next(NULL) {
    	}
    };*/
    class Solution {
    public:
        ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
            // 设置一个结点先走k步,然后一起走
            if (pListHead == nullptr) return NULL;
            if (k < 0) return NULL;
            ListNode* p = pListHead;
            for (int i = 0; i< k-1; i++){
                p = p->next;
                if (p == nullptr) return NULL;
            }
            while (p->next != nullptr){
                p = p->next;
                pListHead = pListHead->next;
            }
            return pListHead;
        
        }
    };
  • 您还可以看一下 王健伟老师的C++高级课程课程中的 多继承第二基类虚函数支持、虚继承带虚函数小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^