資料結構 二叉樹面試題(2)

2021-08-22 10:14:04 字數 1366 閱讀 2915

#pragma once

#include #include #include typedef struct bstreenode bstreenode;

bstreenode * createnode(int data)

// 如果存在,插入失敗返回 -1, 否則插入成功,返回 0

int insert(bstreenode **proot, int data)

if ((*proot)->data == data)

if (data < (*proot)->data)

else

}bstreenode *pprev = null; // 留個作業,不要全域性變數

// 1. 中序

// 2. 有了結點,怎麼構造雙向鍊錶

// 1)前驅 + 當前結點

// 2)當前結點 + 後繼

void handlenode(bstreenode *proot)

proot->pleft = pprev;

// 不斷記錄 prev

pprev = proot;

}void inorderloop(bstreenode *proot)

// 後序的區別

// 不能直接出棧,需要右子樹也遍歷完

// 判斷右子樹遍歷完的方式

// 1. 右孩子為 null

// 2. 通過乙個遍歷(plast)記錄上次遍歷完的子樹

// 當 ptop->pright == plast

ptop = stack[top - 1];

top--;

printf("%d ", ptop->data);

pcur = ptop->pright; }}

void postorderloop(bstreenode *proot)

// 後序的區別

// 不能直接出棧,需要右子樹也遍歷完

// 判斷右子樹遍歷完的方式

// 1. 右孩子為 null

// 2. 通過乙個遍歷(plast)記錄上次遍歷完的子樹

// 當 ptop->pright == plast

ptop = stack[top - 1];

if (ptop->pright == null || ptop->pright == plast)

pcur = ptop->pright; }}

void inorder(bstreenode *proot)

inorder(proot->pleft);

handlenode(proot);

inorder(proot->pright);

}void test()

資料結構 二叉樹面試題(1)

pragma once include include include typedef char datatype typedef struct btreenode btreenode btreenode createnode datatype data btreenode createtree d...

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

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

二叉樹 面試題2

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。前序遍歷 dlr 中序遍歷 ldr 重建過程用遞迴演算法比較簡單 public static treenode reconstruc...