zoukankan      html  css  js  c++  java
  • 从上往下遍历二元树

    题目:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。

    例如输入

    8
    / \
    6 10
    /\ /\
    5 7 9 11

    输出8 6 10 5 7 9 11。

    比较简单的一道题目,思路是遍历一个结点时,首先访问它,然后将它的左右子树放入队列中。

    ps:今天的数模B题好纠结....郁闷中.........

    //利用队列实现从根到叶的遍历
    #include<iostream>
    #include<queue>
    using namespace std;
    struct treenode{
    	int data;
    	treenode *l;
    	treenode *r;
    };
    treenode* create(void){
    	treenode *tree=new treenode;
    	tree->data=8;
    	tree->l=new treenode;
    	tree->l->data=6;
    	tree->l->l=new treenode;
    	tree->l->l->data=5;
    	tree->l->l->l=NULL;
    	tree->l->l->r=NULL;
    	tree->l->r=new treenode;
    	tree->l->r->data=7;
    	tree->l->r->l=NULL;
    	tree->l->r->r=NULL;
    
    	tree->r=new treenode;
    	tree->r->data=10;
    	tree->r->l=new treenode;
    	tree->r->l->data=9;
    	tree->r->l->l=NULL;
    	tree->r->l->r=NULL;
    	tree->r->r=new treenode;
    	tree->r->r->data=11;
    	tree->r->r->l=NULL;
    	tree->r->r->r=NULL;
    
    	return tree;
    
    }
    void print(treenode *tree){
    	queue<treenode *> my_queue;
    	if(!tree) return;
    	my_queue.push(tree);
    	while(!my_queue.empty()){
    		treenode *now=my_queue.front();
    		my_queue.pop();
    		cout<<now->data<<" ";
    		if(now->l) my_queue.push(now->l);
    		if(now->r) my_queue.push(now->r);
    	}
    	cout<<endl;
    }
    int main(void){
    	print(create());
    	system("pause");
    	return 0;
    }
    
     

  • 相关阅读:
    文艺青年、普通青年、2b青年到底是什么意思?
    CMake快速入门教程:实战
    shell脚本中变量$$、$0等的含义
    工作上的C/C++相关
    C/C++的一些备忘
    shell基础二十篇 一些笔记
    C++中this指针的用法详解
    【C++11】新特性——auto的使用
    一个很不错的bash脚本编写教程
    容器
  • 原文地址:https://www.cnblogs.com/aLittleBitCool/p/1951739.html
Copyright © 2011-2022 走看看