zoukankan      html  css  js  c++  java
  • 输出二叉树的所有路径

    #include <stdio.h>
    #include <stdlib.h>
    typedef struct node
    {
      char data;
      node *lchild;
      node *rchild;
    }TreeNode;

    void CreateTree(TreeNode *&Node, char *pstr)
    {
      int top = -1;
      TreeNode *Stack[100];
      char ch = *pstr;
      int j = 0;
      int t;
      TreeNode *p = NULL;
    while(ch != '\0')
    {
      switch(ch)
      {
        case '(':
         Stack[++top] = p;t = 1;
          break;
        case ')':
          top--;
          break;
        case ',':
          t = 2;
          break;
        default:
          p = (TreeNode *)malloc(sizeof(TreeNode));
          p->lchild = p->rchild = NULL;p->data = ch;
        if (Node == NULL)
        {
          Node = p;
        }
        else
        {
          switch(t)
          {
            case 1:
              Stack[top]->lchild = p;
              break;
            case 2:
              Stack[top]->rchild = p;
              break;
            }
          }
          break;
        }
        ch = pstr[++j];
      }
    }

    void AllPath(TreeNode *Node)
    {
      TreeNode *p = Node;
      TreeNode *Stack[100];
      int flag;
      TreeNode *q = NULL;
      int top = -1;
      do
      {
         while(p != NULL)
         {
          Stack[++top] = p;
          p = p->lchild;
         }
         q = NULL;
         flag = 1;
         while(flag && top >= 0)
        {
          p = Stack[top];
          if (q == p->rchild)
          {
            if (p->lchild == NULL && p->rchild == NULL)
            {
              for (int i = 0; i <= top; i++)
              {
                printf("%c", Stack[i]->data);
              }
              printf("\n");
            }
            --top;
            q = p;
          }
          else
          {
            p = p->rchild;
            flag = 0;
          }
        }
      } while (top >= 0);
    }

    int _tmain(int argc, _TCHAR* argv[])
    {
      char str[] = "A(B(D(,G)),C(E,F))";
      TreeNode *Node = NULL;
      CreateTree(Node, str);
      AllPath(Node);
      return 0;
    }

  • 相关阅读:
    JVM(随手笔记)
    linux常用操作(个人笔记)
    MySQL学习笔记(个人随手笔记)
    jquery对象和Dom对象的转化([0])
    函数防抖和函数节流
    数据持久化分析
    day.js处理相对时间
    外链资源403的处理
    前端实现图片预览的两种方式及使用
    监听器标准写法
  • 原文地址:https://www.cnblogs.com/lzmfywz/p/3011142.html
Copyright © 2011-2022 走看看