码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树的遍历与建立

时间:2019-04-28 00:03:06      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:size   return   treenode   code   ++   class   include   protected   clu   

二叉树简介

  二叉树是一种非线性结构,二叉树的遍历方式有三种:前序、中序和后序。  在学习二叉树的时候,把二叉树分为三部分:根结点,左子树和右子树,所谓遍历方式即访问这三部分的先后顺序。
我对于二叉树遍历的方式的理解是這样的:
前序遍历:先访问根结点,再访问左子树,最后访问右子树。
中序遍历:先访问左子树,再访问根节点,最后访问右子树。
后序遍历:先访问左子树,再访问右子树,最后访问根结点。

技术图片

 

1.二叉树的建立

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<string>
#include<assert.h>
#include<stack>
#include<queue>
using namespace std;
template<class T>
struct BinaryTreeNode
{
    T _data;
    BinaryTreeNode<T>* _left;
    BinaryTreeNode<T>* _right;
    BinaryTreeNode(const T& d)
         :_data(d)
         ,_left(NULL)
         , _right(NULL)
    {
         cout << "构造二叉树结点" << endl;
    }
};
template<class T>
class BinaryTree
{
    typedef BinaryTreeNode<T> Node;
private:
    Node* _root;
protected:
    Node* _CreateTree(T* a, size_t n, const T& invalid, size_t& index)  
    {
         //index = 0;           Node* root = NULL;
         if (index < n && a[index] != invalid)
         {
             root = new Node(a[index]);
             root->_left = _CreateTree(a, n, invalid, ++index);    
           root->_right = _CreateTree(a, n, invalid, ++index);
         }
         return root;
    }
2.前中后序遍历
void _PrevOrder(Node* root) //前序遍历 { if (root == NULL) //返回条件 return; cout << root->_data << " "; _PrevOrder(root->_left); _PrevOrder(root->_right);
}
    void _InOrder(Node* root)    //中序遍历
    {
         if (root == NULL)       //返回条件
             return;
         _InOrder(root->_left);            
         cout << root->_data << " ";
         _InOrder(root->_right);
    }
    void _PostOrder(Node* root)   //后序遍历
    {
         if (root == NULL)        //返回条件
             return;
         _PostOrder(root->_left);
         _PostOrder(root->_right);
         cout << root->_data << " ";
    }
技术图片

 

 

二叉树的遍历与建立

标签:size   return   treenode   code   ++   class   include   protected   clu   

原文地址:https://www.cnblogs.com/amema/p/10781134.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!