【编程题目】输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印
2014-08-04 19:41
239 查看
第 16 题(树):
题目(微软):
输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
例如输入
8
/ \
6 10
/ \ / \
5 7 9 11
输出 8 6 10 5 7 9 11。
思路:之前做USACO和学算法的时候经常用的 广度优先搜索
View Code
题目(微软):
输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
例如输入
8
/ \
6 10
/ \ / \
5 7 9 11
输出 8 6 10 5 7 9 11。
思路:之前做USACO和学算法的时候经常用的 广度优先搜索
/* 第 16 题(树): 题目(微软): 输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。 例如输入 8 / \ 6 10 / \ / \ 5 7 9 11 输出 8 6 10 5 7 9 11。 start time = 19: 10 end time = 19:36 */ //思路 广度优先遍历 #include <iostream> #include <queue> #include <stdlib.h> using namespace std; typedef struct BSTreeNode { int m_nValue; // value of node BSTreeNode *m_pLeft; // left child of node BSTreeNode *m_pRight; // right child of node }BSTreeNode; int addBSTreeNode(BSTreeNode * &T, int data) //把data加入的以T为根的树中 { if(T == NULL) //根节点单独处理 { T = (BSTreeNode *)malloc(sizeof(BSTreeNode)); T->m_nValue = data; T->m_pLeft = NULL; T->m_pRight = NULL; } else { BSTreeNode * x = T; BSTreeNode * px = NULL; while(x != NULL) { if(data >= x->m_nValue) { px = x; x = x->m_pRight; } else { px = x; x = x->m_pLeft; } } if(data >= px->m_nValue) { px->m_pRight = (BSTreeNode *)malloc(sizeof(BSTreeNode)); px->m_pRight->m_nValue = data; px->m_pRight->m_pLeft = NULL; px->m_pRight->m_pRight = NULL; } else { px->m_pLeft = (BSTreeNode *)malloc(sizeof(BSTreeNode)); px->m_pLeft->m_nValue = data; px->m_pLeft->m_pLeft = NULL; px->m_pLeft->m_pRight = NULL; } } return 1; } int BFSPrintTree(BSTreeNode * T) { queue<BSTreeNode *> Q; Q.push(T); while(!Q.empty()) { BSTreeNode * x = Q.front(); Q.pop(); printf("%d ", x->m_nValue); if(x->m_pLeft != NULL) { Q.push(x->m_pLeft); } if(x->m_pRight != NULL) { Q.push(x->m_pRight); } } return 1; } int main() { BSTreeNode * T = NULL; addBSTreeNode(T, 8); addBSTreeNode(T, 6); addBSTreeNode(T, 10); addBSTreeNode(T, 5); addBSTreeNode(T, 7); addBSTreeNode(T, 9); addBSTreeNode(T, 11); BFSPrintTree(T); return 0; }
View Code
相关文章推荐
- 题目:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
- 第16 题:题目(微软):输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
- 输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印
- 【练习】输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印
- <仅是自己做笔记。。。系列-8>输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
- 输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印
- 输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印
- 14. 微软面试题:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
- 【算法】输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印
- 输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印
- 16.输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印
- 输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印(16)
- 16题:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
- 微软100题第16题(输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印)
- 算法习题16:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印
- Np16、输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
- 输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
- 16 输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
- 每天学习一算法系列(16)(输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印)
- 输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印