day17 二叉树的所有路径

void traversal(TreeNode* cur,

vector& path,

vector& result)

{

        path.push_back(cur->val); // 中,中为什么写在这里,因为最后一个节点也要加入到path中 

        // 这才到了叶子节点

        if (cur->left == NULL && cur->right == NULL) {

            string sPath;

            加入除最后一个元素外的数据

            for (int i = 0; i < path.size() - 1; i++) {

                sPath += to_string(path[i]);

                sPath += "->";

            }

            加入最后一个元素

            sPath += to_string(path[path.size() - 1]);

            result.push_back(sPath);

            return;

        }

        if (cur->left) { // 左 

            traversal(cur->left, path, result);

            path.pop_back(); // 回溯

        }

        if (cur->right) { // 右

            traversal(cur->right, path, result);

            path.pop_back(); // 回溯

        }

    }

 

    vector binaryTreePaths(TreeNode* root) {

        vector result;

        vector path;

        if (root == NULL) return result;

        traversal(root, path, result);

        return result;

    }

 

 

 

你可能感兴趣的:(算法)