二叉樹的基本操作與面試題

2021-08-19 19:30:01 字數 2502 閱讀 4400

面試題

拷貝二叉樹

前序遍歷非遞迴

二叉樹的映象遞迴

二叉樹的映象非遞迴

求二叉樹中結點的個數

獲取二叉樹中葉子結點的個數

求二叉樹中k層結點的個數

求二叉樹的高度

其中用到的佇列

棧的基本操作

二叉樹的基本操作

queue.h

#pragma once

typedef

char btdatatype;

typedef

struct bintreenode

btnode, *pbtnode;

// 構建二叉樹的結點

pbtnode buybintreenode(btdatatype data);

// 建立二叉樹

void _createbintree(pbtnode* proot, const btdatatype* array, int size, int* index, btdatatype invalid);

void createbintree(pbtnode* proot, const btdatatype* array, int size, btdatatype invalid);

// 拷貝二叉樹

pbtnode copybintree(pbtnode proot);

// 銷毀二叉樹

void destroybintree(pbtnode *proot);

// 前序遍歷遞迴

void preorder(pbtnode proot);

// 前序遍歷非遞迴

void preordernor(pbtnode proot);

// 中序遍歷遞迴

void inorder(pbtnode proot);

// 後續遍歷遞迴

void postorder(pbtnode proot);

// 層序遍歷

void levelorder(pbtnode proot);

// 二叉樹的映象遞迴

void mirrorbintree(pbtnode proot);

// 二叉樹的映象非遞迴

void mirrorbintreenor(pbtnode proot);

// 求二叉樹中結點的個數

int bintreesize(pbtnode proot);

// 獲取二叉樹中葉子結點的個數

int getleafcount(pbtnode proot);

// 求二叉樹中k層結點的個數

int getklevelnode(pbtnode proot, int k);

// 求二叉樹的高度

int height(pbtnode proot);

queue.c

#pragma once

#include"bintree.h"

#include"queue.h"

#include"stack.h"

#include

#include

#include

pbtnode buybintreenode(btdatatype data)

void createbintree(pbtnode* proot, const btdatatype* array, int size, btdatatype invalid)

void _createbintree(pbtnode* proot, const btdatatype* array, int size, int* index, btdatatype invalid)

}void preorder(pbtnode proot)

}

面試題

void preordernor(pbtnode proot)

}}void inorder(pbtnode proot)

}void postorder(pbtnode proot)

}void levelorder(pbtnode proot)

queuedestory(&q);

}void destroybintree(pbtnode *proot)

void mirrorbintree(pbtnode proot)

}void mirrorbintreenor(pbtnode proot)

queuedestory(&q);

}int bintreesize(pbtnode proot)

int getleafcount(pbtnode proot)

int getklevelnode(pbtnode proot, int k)

int height(pbtnode proot)

pbtnode copybintree(pbtnode proot)

return pnew;

}

二叉樹基本操作及面試題

include include include includeusing namespace std templatestruct binarytreenode 給出二叉樹節點的結構體 t value 值 binarytreenode pleft 左孩子 binarytreenode pright ...

資料結構 二叉樹基本操作 二叉樹面試題

二叉樹的基本概念就不多說了 如下 binarytree.c pragma once include include include include typedef char btdatatype typedef struct binarytreenode btnode a是乙個前序遍歷的陣列 二叉樹...

二叉樹面試題

1.求二叉樹節點個數 可以使用遞迴解決。將問題分解為求根節點 左子樹的節點數 右節點的節點數。實現 public size t size private size t size node root 2.求頁節點個數 頁節點 左右子樹都為空的節點被稱為頁節點,使用遞迴遍歷,當碰到乙個左右子樹為空的節點...