美文网首页
打印二叉树的全部路径

打印二叉树的全部路径

作者: lintong | 来源:发表于2015-02-28 13:56 被阅读573次

Algorithm:

initialize: pathlen = 0, path[1000] 
/*1000 is some max limit for paths, it can change*/

/*printPathsRecur traverses nodes of tree in preorder */
printPathsRecur(tree, path[], pathlen)
   1) If node is not NULL then 
         a) push data to path array: 
                path[pathlen] = node->data.
         b) increment pathlen 
                pathlen++
   2) If node is a leaf node then print the path array.
   3) Else
        a) Call printPathsRecur for left subtree
                 printPathsRecur(node->left, path, pathLen)
        b) Call printPathsRecur for right subtree.
                printPathsRecur(node->right, path, pathLen)

void printArray(int [], int);
void printPathsRecur(struct node*, int [], int);
struct node* newNode(int );
void printPaths(struct node*);
 
/* Given a binary tree, print out all of its root-to-leaf
   paths, one per line. Uses a recursive helper to do the work.*/  
void printPaths(struct node* node)
{
  int path[1000];
  printPathsRecur(node, path, 0);
}
 
void printPathsRecur(struct node* node, int path[], int pathLen)
{
  if (node==NULL) return;
 
  /* append this node to the path array */
  path[pathLen] = node->data;
  pathLen++;
 
  /* it's a leaf, so print the path that led to here */
  if (node->left==NULL && node->right==NULL)
  {
    printArray(path, pathLen);
  }
  else
  {
  /* otherwise try both subtrees */
    printPathsRecur(node->left, path, pathLen);
    printPathsRecur(node->right, path, pathLen);
  }
}
 
 
 
/* Utility that prints out an array on a line */
void printArray(int ints[], int len)
{
  int i;
  for (i=0; i<len; i++) {
    printf("%d ", ints[i]);
  }
  printf("\n");
}
 

相关文章

  • 打印二叉树的全部路径

    Algorithm:

  • 《剑指offer》— JavaScript(24)二叉树中和为某

    二叉树中和为某一值的路径 题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定...

  • 34:二叉树中和为某一值的路径

    题目34:二叉树中和为某一值的路径 输入一棵二叉树和一个整数, 打印出二叉树中结点值的和 = 输入整数的所有路径。...

  • 25 二叉树中和为某一值的路径

    二叉树中和为某一值的路径 题目描述 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径...

  • 面试题34. 二叉树中和为某一值的路径

    二叉树中和为某一值的路径 题目描述 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的...

  • 剑指offer-二叉树中和为某一值的路径

    题目描述★★★:输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根...

  • 经典算法题

    涉及:二叉树,遍历,深度广度遍历,快排,冒泡,单链表 二叉树: 1.给你一个二叉树,要你打印输出所有路径。http...

  • 【面试题25】

    【题目描述】输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点...

  • 二叉树的路径问题 - JAVA版本

    问题描述: 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点...

  • 24:二叉树中和为某一值的路径

    题目描述 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开...

网友评论

      本文标题:打印二叉树的全部路径

      本文链接:https://www.haomeiwen.com/subject/wvwpxttx.html