В дереве найти длину путей до всех вершин

Есть код, который находит длину путей до всех листьев. Подскажите как преобразовать функцию printLeafs чтобы она находила пути до всех узлов? Или возможно это лучше реализовать в main используя printLeafs

#include <iostream>
#include <conio.h>

using namespace std;

struct node
{
    int val;
    node *left, *right;
    node(int i) : val(i), left(NULL), right(NULL) {};
};

node *addNode(int val)
{
    return new node(val);
}

node *addTree(node *root, int val)
{
    if (!root)
    {
        root = addNode(val);
        return root;
    }
    if (val < root->val)
    {
        if (!root->left)
        {
            root->left = addNode(val);
        }
        else
        {
            addTree(root->left, val);
        }
    }
    if (val > root->val)
    {
        if (!root->right)
        {
            root->right = addNode(val);
        }
        else
        {
            addTree(root->right, val);
        }
    }
    return root;
}

void printLeafs(node *root, int level)
{
    if (root)
    {

        printLeafs(root->left, level + 1);
        if (!root->left && !root->right)
            cout << "The path to leaf " << root->val << " is equal to " << level << endl;
        printLeafs(root->right, level + 1);
    }
}

int main()
{
    int num;
    cout << "Write numbers of the tree: ";
    cin >> num;
    node *tree = NULL;
    if (num != 0)
        tree = new node(num);
    while (num != 0)
    {
        addTree(tree, num);
        cin >> num;
    }
    cout << "Leaves: " << endl;
    int level =0;
    printLeafs(tree, level);
    _getch();
    return 0;
}

Ответы (0 шт):