1. 程式人生 > >C++二叉樹的建立以及遍歷

C++二叉樹的建立以及遍歷

最近在刷 leetcode 的題目,初學演算法,菜鳥一枚,寫部落格記錄下常用程式碼,以備以後查閱,如果程式碼出現問題,請各位高手指教

void CreatBiTree(TreeNode* &T) {
	char ch;
	
	if ((ch = getchar()) == '#')
		T = NULL;
		else {
			T = new TreeNode;
			T->val  = ch; 
			CreatBiTree(T->left);
			CreatBiTree(T->right); 
		}
}
void PreOrderTraverse(TreeNode* &T) { // 先序遍歷二叉樹  
	if (T!=NULL) { // 當節點不為空時執行  
		cout << T->val;
		PreOrderTraverse(T->left);
		PreOrderTraverse(T->right);
	}
	else  
		cout  << "";
}
int main()
{
	Solution s;
	TreeNode *head=new TreeNode;
	
	int a[7] = {1,2,2,3,4,4,3};
	int flag;
	CreatBiTree(head);
	cout << "建立完成" << endl;
	PreOrderTraverse(head);
	cout << "前序遍歷" << endl;
	
	system("pause");

}

相關推薦

C++ 建立

#include<iostream> using namespace std; struct bitNode { char data; bitNode *lchild, *rchild

C++建立

注意:二叉樹建立時要用指標的引用,詳解參考:#include <iostream> using namespace std; struct BiNode { char data; BiNode *lchild, *rchild; }; void Creat

建立以及(遞迴和非遞迴方式)

#include <iostream> #include <assert.h> #include <stack> using namespace std; typedef struct biTreeNode { c

建立、求深度--C語言實現

#include <stdio.h> #include <stdlib.h> #include <malloc.h> typedef int ElemType; //資料型別 typedef int Status; //返回值型別

建立

mil inorder 推斷 microsoft con 是否 font pac node 二叉樹創建遍歷規則: 1.先序:根-左-右 2.中序:左-根-右 3.後序:左-右-根 二叉樹定義和輔助函數例如以下: struct node {

建立(類)

程式碼: #include<iostream> #include<queue> using namespace std; //建立節點 struct Tnode { char data;//資料域 Tnode *rchild;//右孩子 Tno

遞迴建立及深度計算

上篇咱們說到二叉樹的一種建立方法及三種遍歷方法的遞迴非遞迴演算法。這篇換了一種新的建立方法,用先根遍歷遞迴的思路建立二叉樹,用遞迴的方法計算深度,用中根遞迴和非遞迴方法遍歷整個二叉樹。 BinaryTree.h //二叉樹的建立和遍歷 #ifndef BINARYTREE_

建立(前序,中序,後序),求葉節點個數,求節點個數

二叉樹是筆試面試中考試最頻繁的資料結構之一,主要包括,程式建立一個二叉樹,三種次序遍歷二叉樹,返回葉子節點的數目,求二叉樹節點的總數等。建立一個二叉樹節點的資料結構 typedef struct Node {int data;struct Node *left,*right

資料結構實驗-C語言-二叉樹建立,前、中、後序遍歷的遞迴演算法和非遞迴演算法,求葉子結點數目,求二叉樹深度,判斷二叉樹是否相似,求二叉樹左右子互換,二叉樹層序遍歷的演算法,判斷二叉樹是否是完全二叉樹

1.實驗目的 熟練掌握二叉樹的二叉連結串列儲存結構的C語言實現。掌握二叉樹的基本操作-前序、中序、後序遍歷二叉樹的三種方法。瞭解非遞迴遍歷過程中“棧”的作用和狀態,而且能靈活運用遍歷演算法實現二叉樹的其它操作。 2.實驗內容 (1)二叉樹的二叉連結串列的建立 (2)二叉樹的前、中、後

LeetCode102 ·的層次(C++)

leetcode 層次遍歷 nbsp tro 層次 遍歷 str 描述 c++ 題目描述: 給定一個二叉樹,返回其按層次遍歷的節點值。 (即逐層地,從左到右訪問所有節點)。 例如:給定二叉樹: [3,9,20,null,null,15,7], 3 /

中序(非遞迴)演算法實現--C語言

今天繼續二叉樹的學習。 昨天寫了一遍二叉樹的先序遍歷(非遞迴)演算法,今天寫一下二叉樹的二叉樹的中序遍歷(非遞迴)演算法。中序遍歷的非遞迴演算法有兩種,但是個人覺得只要掌握一種就可以了,只要自己的邏輯清晰,會哪一種又有什麼關係呢~ 首先給出今天的二叉樹的示例圖: 程式碼如下:

Leetcode 102. 的層次 C++

題目描述: 給定一個二叉樹,返回其按層次遍歷的節點值。 (即逐層地,從左到右訪問所有節點)。 例如: 給定二叉樹: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其層次遍歷結果:

後序(遞迴與非遞迴)演算法及C語言實現

二叉樹後序遍歷的實現思想是:從根節點出發,依次遍歷各節點的左右子樹,直到當前節點左右子樹遍歷完成後,才訪問該節點元素。 圖 1 二叉樹   如圖 1 中,對此二叉樹進行後序遍歷的操作過程為: 從根節點 1 開始,遍歷該節點的左子樹(以節點 2 為根節點); 遍歷節點 2 的左子樹(以節點 4 為根

中序(遞迴和非遞迴)演算法及C語言實現

二叉樹中序遍歷的實現思想是: 訪問當前節點的左子樹; 訪問根節點; 訪問當前節點的右子樹; 圖 1 二叉樹   以圖  1 為例,採用中序遍歷的思想遍歷該二叉樹的過程為: 訪問該二叉樹的根節點,找到 1; 遍歷節點 1 的左子樹,找到節點 2; 遍歷節點 2 的左子樹,找到節點 4;

先序(遞迴與非遞迴)及C語言實現

二叉樹先序遍歷的實現思想是: 訪問根節點; 訪問當前節點的左子樹; 若當前節點無左子樹,則訪問當前節點的右子樹; 圖 1 二叉樹   以圖  1 為例,採用先序遍歷的思想遍歷該二叉樹的過程為: 訪問該二叉樹的根節點,找到 1; 訪問節點 1 的左子樹,找到節點 2; 訪問節點 2 的左子

C語言實現的各種及求解深度

#include<stdio.h> #include<malloc.h> #define MAXSIZE 100 typedef char dataType; //二叉樹結構 typedef struct bnode{ dataType data; struct bnode *lC

的各種演算法C++實現

大概在網上摘抄和總結了二叉樹的幾種遍歷方法,有遞迴和非遞迴的,先貼在這裡,用的時候在來看看。再次謝謝網上的各種資源。謝謝CSDN博主SJF0115,謝謝劍指offer作者何海濤~ #include"stdafx.h" #include<iostream>

的各種演算法以及例項

一、二叉樹 在電腦科學中,樹是一種重要的非線性資料結構,直觀地看,它是資料元素(在樹中稱為結點)按分支關係組織起來的結構。二叉樹是每個節點最多有兩個子樹的有序樹。通常子樹被稱作“左子樹”(left subtree)和“右子樹”(right subtree)。二叉樹常被用於實

【LeetCode】Binary Tree Inorder Traversal 中序遞迴以及非遞迴演算法

  Total Accepted: 16494 Total Submissions: 47494 Given a binary tree, return the inorder traversal of its nodes' values. For example: Giv

後序(非遞迴)演算法實現--C語言

  一直說要寫二叉樹的後序非遞迴遍歷演算法,但是前兩天各種事情,今天終於有時間好好寫一寫二叉樹的後序遍歷演算法。   二叉樹的後序遍歷演算法比先序和中序的遍歷演算法要複雜一些。其出棧條件有兩種情況: 棧頂元素所指向的節點的左子樹和右子樹均為空; 棧頂元素所指向的節點的左子樹