1. 程式人生 > 實用技巧 >深度優先演算法之列印二叉樹葉子節點路徑

深度優先演算法之列印二叉樹葉子節點路徑

比如這樣一棵二叉樹,如何列印二叉樹葉子節點路徑呢?

程式碼如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int result[100] = {0};
int count = 0;

struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
};

void printNode()
{
    int i = 0;
    printf("%d", result[i]);
    
for(i = 1; i < count; i++) { printf("--->%d", result[i]); } printf("\n"); } void dfs(struct TreeNode* node) { if(node == NULL) { return; } result[count++] = node->val; if (node->right == NULL && node->left == NULL) { printNode(); count
--; //重點在這裡回退 return; } dfs(node->left); dfs(node->right); count--; //重點在這裡,要回退 } int main() { struct TreeNode Node[5]; Node[0].val = 4; Node[0].left = &Node[1]; Node[0].right = &Node[2]; Node[1].val = 9; Node[1].left = &Node[3]; Node[
1].right = &Node[4]; Node[2].val = 0; Node[2].left = NULL; Node[2].right = NULL; Node[3].val = 5; Node[3].left = NULL; Node[3].right = NULL; Node[4].val = 1; Node[4].left = NULL; Node[4].right = NULL; dfs(&Node[0]); return 0; }

結果: